2017-10-12 100 views
0

我希望使用下面的代碼段中的刮刀拉網絡上從遠程無線電統計:節點模塊「請求」返回不完整的HTML

var request = require('request'); 
var radioURL = '192.10.1.65'; 
request.get({ 
    url: pageURL 
}, (error, response, html) => { 
    console.log(html); 

控制檯輸出以下HTML:

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="2.22.css"> 
<script type="text/javascript" src="2.22.js">"></script> 
</head> 
<body onLoad="show('viewPage=10');"> 
    <div id="logo"><img src="logo.jpg"></div> 
    <div id="menu"></div> 
    <div id="reboot"><center><input type="button" value="Reboot" onclick="javascript:show('reboot=1');"></center></div> 
    <div id="info"></div> 
    <div id="header"></div> 
    <div id="content"></div> 
</body> 

有效載荷我很感興趣,解析出駐留在div標籤中使用id =「內容」。裏面有一個表格,裏面的表格是一張表格,裏面包含了我所有的數據。下圖顯示了對擴展頁面的檢查,以查看td標籤中相應值的「電壓」。我在請求中嘗試了不同的頭部組合,以及超時認爲網絡延遲是問題的一部分。我如何獲得div元素下面的元素?

謝謝。

inspection of elements below div element

回答

0

調用request.get()檢索Web服務器發送給瀏覽器的RAW HTML。這就是你得到的。如果您在查看該頁面的同時在瀏覽器中執行查看/源代碼,則這與您將看到的內容相同。

如果網頁的構建方式是使用Javascript向頁面添加內容,那麼您將不會看到request.get()的新內容,因爲在使用request.get()檢索數據時沒有運行Javascript。您只是對服務器執行HTTP請求並獲取原始頁面內容。

如果你想訪問通過Javascript添加的內容,那麼你需要使用通常所說的「無頭瀏覽器」,它可以獲取RAW HTML,在頁面中運行Javascript併爲您提供DOM-用於訪問使用Javascript插入的內容。

您可以在這裏看到可以在nodejs中使用的無頭瀏覽器模塊列表:https://github.com/dhamaniasad/HeadlessBrowsers。我對他們中的任何人都沒有親身經歷,但是我在這裏看到的堆棧溢出最多的是Nightmare,X-Ray和PhantomJS。

0

對於站點刮,我是X射線的一個巨大的倡導者。它是有據可查的,但在你的情況,你會去基本上

xray('http://192.10.1.65', 'form-elements-you-are-targetting')(fn) 

https://github.com/matthewmueller/x-ray

這是非常,非常好。

相關問題