通过使用node.js我试图抓取一个网页。为此,我使用cheerio和tinyreq模块。我的源代码如下:
// scrape function
function scrape(url, data, cb) {
req(url, (err, body) => {
if (err) { return cb(err); }
let $ = cheerio.load(body)
, pageData = {};
Object.keys(data).forEach(k => {
pageData[k] = $(data[k]).text();
});
cb(null, pageData);
});
}
scrape("https://www.activecubs.com/activity-wheel/", {
title: ".row h1"
, description: ".row h2"
}, (err, data) => {
console.log(err || data);
});
在我的代码中,h1标签中的文本是静态的,而在h2标签中,它是动态的。当我运行代码时,我只获取静态数据,即描述字段数据为空。通过以前的StackOverflow问题,我尝试使用幻像j来克服这个问题,但它对我不起作用。这里的动态数据是通过旋转车轮获得的数据。对于我正在使用的网站上的任何疑问,您可以查看https://www.activecubs.com/activity-wheel/。
答案 0 :(得分:0)
答案 1 :(得分:0)
可以使用SpookyJS
执行用户操作SpookyJS可以从Node.js驱动CasperJS套件。在高层次上,Spooky通过将Casper作为子进程生成并通过RPC控制它来实现这一目标。 具体来说,每个Spooky实例都会生成一个运行引导脚本的子Casper进程。引导脚本设置JSON-RPC服务器,该服务器通过传输(HTTP或stdio)侦听来自父Spooky实例的命令。该脚本还设置了一个JSON-RPC客户端,该客户端通过stdout将事件发送到父Spooky实例。查看documentation