phantomjs是如何抓取页面的动态数据的?
Phantomjs可以运行js,因为它是一个无头浏览器,所以也可以运行dom节点,非常适合网页抓取。
比如我们需要批量抓取网页上“历史上的今天”的内容。网站
对dom结构的观察表明,我们只需要得到。所以我们使用高级选择器来构建dom片段。
变量d= ' '
var c = document.querySelectorAll('。列出阿利’)
var l = c.length
for(var I = 0;我& ltl;i++){
d=d+c[i]。标题+'\n '
}
之后就让js代码在phantomjs里运行吧~
var page = require('网页')。create();
Page.open ('/'),function(status){//打开页面。
如果(状态!== '成功'){
console.log('无法加载地址');
}否则{
console . log(page . evaluate(function(){
变量d= ' '
var c = document.querySelectorAll('。列出阿利’)
var l = c.length
for(var I = 0;我& ltl;i++){
d=d+c[i]。标题+'\n '
}
返回d
}))
}
幻影. exit();
});
最后我们保存为catch.js,在dos下执行,将内容输出到txt文件(也可以用phantomjs文件api编写)。