【发布时间】:2015-04-28 15:10:08
【问题描述】:
我正在尝试抓取website,但我没有得到一些元素,因为这些元素是动态创建的。
我在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'));
});
});
此代码返回空响应,因为当页面加载时,<ul id="store_list" class="listMain"> 为空。
内容尚未附加。
如何使用 node.js 获取这些元素?如何抓取包含动态内容的页面?
【问题讨论】:
-
使用 phantom.js 一个无头浏览器,它会加载和渲染页面。您可以使用其 javascript API 访问页面上的不同元素。
-
谢谢萨菲!但是你能给我一个代码 sn-p 或者这个案例的一些参考吗?
-
请注意,此页面上的最佳答案来自 2015 年,建议使用过时的库。截至 2021 年,Puppeteer 和 Playwright 是首选的动态抓取工具,当您阅读本说明时,可能还有其他工具已成为最先进的工具,因此请阅读整个线程。 OP 自 2016 年以来就没有访问过 SO,所以我预计在网站政策发生之前,复选标记不会改变。
标签: javascript node.js web-crawler phantomjs