為什么我用HttpWebRequest、WebClient、甚至是WebBrowser請求網頁,也沒辦法讀取網頁js運行后的結果?還是我的方法錯了?
如下:我如何讀取onloads()后給box的值?
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
var box="";
function onloads(){
var b = xxx()
box =b.box;
document.getElementById('box').value=https://bbs.csdn.net/topics/box;
document.getElementById('iov').action=webProtocal+"://"+webDomain+"/aa.php";
document.getElementById('iov').submit();
}
</script>
</head>
<body onLoad="onloads();">
<form id="iov" name="iov" action="" method=POST target='iFrame'>
<input type="HIDDEN" id="box" name="box" value="">
</form>
</body>
</html>
uj5u.com熱心網友回復:
HttpWebRequest、WebClient得到的是HTML文本內容,JS此時也只是其中的一段文本。WebBrowser不能正常執行這段腳本,可能報錯了,而你沒打開WebBrowser的錯誤提示。uj5u.com熱心網友回復:
你意思是如果正常情況下WebBrowser能執行?
uj5u.com熱心網友回復:
你地址搞錯了唄uj5u.com熱心網友回復:
你要請求post后的地址 然后決議回傳的資料內容uj5u.com熱心網友回復:
WebBrowser應該是可以的,除非腳本不兼容ie內核uj5u.com熱心網友回復:
正常來說 我們想要這種"后結果" 一般都會自己先F12抓一下請求 看請求引數.格式等資訊.然后使用代碼模擬發送http請求 拿到實際的值
uj5u.com熱心網友回復:
1.保證js無誤2.給WebBrowser一點時間,畢竟加載渲染,執行也需要時間。現在所有使用hbir方案人都知道,客戶最喜歡投訴的點就是加載會有那么一會“白屏”
uj5u.com熱心網友回復:
HttpWebRequest、WebClient請求回來的是一堆資料,包括里面內嵌的js腳本等.代碼中的腳本是在頁面加載之后才會去執行的,而前兩種請求回來的資料在非瀏覽器環境或其他技術的加持下是一堆沒有靈魂的尸體.
WebBrowser請求的話,會執行代碼中的腳本的,但是你如果想要獲取執行后的結果,必須在執行后獲取或者用技術手段去手動執行這個js腳本,當然,手動執行的話,你也可以用前兩種方法,拿到獲取內容,拿出里面的js腳本,用js決議引擎(如V8)去執行并獲取執行后的結果資料.
uj5u.com熱心網友回復:
正常。你查下PhantomJS吧,我用他成功扒過js執行后的頁面值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/8432.html
標籤:C#
上一篇:winform 使用webkit打開網面和瀏覽器打開頁面不一致的問題
下一篇:區塊鏈交流
