通过使用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标记中的文本是动态的。当我运行代码时,我只得到静态数据,即,描述字段数据是empty.By遵循前面的StackOverflow问题,我试图使用幻影js来解决这个问题,但它对我不起作用。这里的动态数据是通过旋转轮子获得的数据。如果您对我使用的网站有任何疑问,可以查看https://www.activecubs.com/activity-wheel/。
发布于 2017-09-04 19:28:31
发布于 2017-09-04 20:27:33
可以使用SpookyJS执行用户操作
SpookyJS使从Node.js驱动CasperJS套件成为可能。在较高的级别上,Spooky通过将Casper派生为子进程并通过RPC控制它来实现这一点。具体地说,每个Spooky实例都会产生一个运行引导脚本的子Casper进程。bootstrap脚本设置一个JSON-RPC服务器,该服务器通过传输( HTTP或stdio)侦听来自父Spooky实例的命令。该脚本还设置了一个JSON-RPC客户端,该客户端通过stdout将事件发送到父Spooky实例。检查documentation
https://stackoverflow.com/questions/46035931
复制相似问题