使用 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中文网其他相关文章!