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编写)。