2017-08-14 40 views
0

我正在做一個與nodeJS的網絡爬蟲,它的工作,它調用頁面,我使用cheerio轉換爲JQuery,並調用標籤。NodeJS - 請求一個頁面以後加載的信息

現在我試圖調用頁面的註釋,但問題是,我想要的標記是在Ajax GET請求幾秒鐘後加載的。而且我做出的請求承諾找不到這個特定的標籤,因爲它稍後加載。

有一些方法可以找到標籤加載?

代碼:

/* Requires */ 
var rp = require('request-promise'); 
var cheerio = require('cheerio'); 

//Page to crawl 

var pageToVisit = "http://pagetoVisit.com/page-with-comments.html"; 
console.log("Visiting "+pageToVisit); 


var options = { 
    uri: pageToVisit, 
    transform: function (body) { 
     return cheerio.load(body); 
    }, 
    resolveWithFullResponse: true, 
    simple: false 
}; 

rp(options) 
    .then(function ($) { 
     console.log($('.CommentsTag').text()); 
    }) 
    .catch(function (err) { 
     console.log(err); 
     // Crawling failed... 
    }); 
+0

提取ajax網址,然後做第二個請求。然而,這需要大量的調試,這可能不符合答案的範圍:/ –

回答

0

我不相信,你將能夠做到這一點使用「cheerio」。它解析HTML DOM,但出於所有意圖和目的,它不是一個Web瀏覽器,因此它不會在頁面上執行腳本。您需要使用CasperJS(由PhantomJS支持)等呈現頁面,以便您可以等待通過腳本加載內容。

CasperJS waitForSelector

編輯:在cheerio文檔。

Cheerio不是web瀏覽器

Cheerio解析標記,並提供用於遍歷/操縱所得到的數據結構的API。它不會像Web瀏覽器那樣解釋結果。具體而言,它不會生成可視化呈現,應用CSS,加載外部資源或執行JavaScript。如果你的用例需要任何這種功能,你應該考慮像PhantomJS或JSDom這樣的項目。

+0

實際上,我用CasperJS使用PhantomJs,調用頁面並顯示評論。謝謝 –

相關問題