使用Node.js 抓取動態內容
抓取網站時,遇到動態內容可能無法立即可見的情況並不少見。頁面加載。要有效地從這些頁面中提取數據,您需要了解如何建立此類內容。
Cheerio 範例
考慮以下程式碼片段:
var request = require('request'); var cheerio = require('cheerio'); var url = "http://www.bdtong.co.kr/index.php?c_category=C02"; request(url, function (err, res, html) { var $ = cheerio.load(html); $('.listMain > li').each(function () { console.log($(this).find('a').attr('href')); }); });
此程式碼嘗試使用Cheerio 抓取網站,但它會傳回空白結果,因為您要提取的元素(
解決方案:使用 PhantomJS
要抓取動態內容,您需要一個可以執行 JavaScript 和類比瀏覽器。這就是 PhantomJS 的用武之地。 PhantomJS 是一個無頭瀏覽器引擎,可讓您執行 JavaScript 命令並渲染網頁。
以下是如何使用 PhantomJS 修改程式碼:
var phantom = require('phantom'); phantom.create(function (ph) { ph.createPage(function (page) { var url = "http://www.bdtong.co.kr/index.php?c_category=C02"; page.open(url, function() { page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { page.evaluate(function() { $('.listMain > li').each(function () { console.log($(this).find('a').attr('href')); }); }, function(){ ph.exit() }); }); }); }); });
透過包含 PhantomJS,您現在可以在頁面上執行 JavaScript 並操作 DOM 來提取您需要的動態內容。
以上是如何使用 Node.js 和 PhantomJS 抓取動態網站內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!