javascript - 使用nodejs和phantomjs进行动态抓取

标签 javascript node.js web-scraping phantomjs

首先,我已经成功安装了 PhantomJs 及其 npm 接口(interface) phantom 。我已设置代码以使用新语法加载我的页面(此处发布的所有其他问题均基于旧代码语法,或者我遗漏了某些内容)。 this is the source I'm trying to scrape .

现在,右侧边栏,即“Comune”附近带有假选择的侧边栏和另一个是动态生成的,我不明白为什么 phantomjs 没有选择它们。按照我的代码:

var sito = "http://bicincitta.tobike.it/";
var sitepage = null;
var phInstance = null;
var phantom = require('phantom')

phantom.create()
    .then((instance) => {
    phInstance = instance;
return instance.createPage();
})
.then((page) => {
    sitepage = page;
return page.open(sito);
})
.then((status) => {
    console.log(status);
return sitepage.property('content');
})
.then((content) => {
    console.log(content);
sitepage.close();
phInstance.exit();
})
.catch((error) => {
    console.log(error);
phInstance.exit();
})

我现在正在用头撞墙。我是否应该以某种方式获取网站的脚本并执行它们?我错过了指令吗?

此外,旁注;如果页面的范围位于第二个“.then”内,目前还不清楚如何将其他方法连接到页面。

最佳答案

过去一周我一直在使用 PhantomJS 来尝试让它用 Angular 渲染的数据来拍摄页面快照。我发现最简单的事情就是使用 page.injectJs('../script.js')对于任何本地脚本,以及 page.includeJs('http://jquery.com...')对于任何外部脚本。由于 Phantom 是沙盒的,它不会在它捕获的页面上执行 javascript,除非你给它 JS 来执行。这将允许您截取包含使用 javascript 呈现的数据的页面。

关于javascript - 使用nodejs和phantomjs进行动态抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654763/

相关文章:

javascript - 在 `bundle.js` 创建 `cachebust.resources()` 之后如何从 html 引用 `bundle.a3503174.js` ?

python - 无法从网页获取动态生成的内容

python - Scrapy - 在未返回项目字段之一时处理异常

javascript - jQuery .click 命令顺序

javascript - 将字符串转换为 JSON node.js

javascript - 为什么我的 async.waterfall javascript 顺序代码没有结束?

python - 如何使用 BeautifulSoup 将 <b> 文本 </b> 拉到 href 标签下面?

javascript - 使用 jQuery 突出显示新添加的项目

javascript - 正弦和余弦

javascript - Ember.js 计算出 : Shortest way to return single object from array