http://phantomjs.org/
PhantomJS是以WebKit为核心并提供JavaScript编程接口(API)的无界面浏览器。 它提供对web标准的 快速 并且 原生 的支持: DOM操作、CSS选择符、JSON、Canvas和SVG。
使用帮助:
http://www.cnblogs.com/ziyunfei/archive/2012/09/28/2707218.html
以前一直想做一个如何解析起点网站上那些通过JS脚本输出的章节内容(原始DOM数据),也想过用WEBKIT去解析,如今,PhantomJS终于完成了这个事情,简单测试过程如下:
编写一段简单的JS代码并存储在e:\wbhcode\test.js
console.log('Loading a web page');
var page = require('webpage').create();
var url = 'http://qidian.com';
page.open(url, function (status) {
//Page is loaded!
if (status !== 'success') {
console.log('Unable to post!');
} else {
console.log(page.content);
}
phantom.exit();
});
然后通过命令行,执行JS生成对应的解析结果: e:\wbhcode\test.txt
执行过程截图如下:

让我们看下对起点文章内容进行抓取的试验:
找一篇起点的文章:
看下文章源码结构:

注意了哦: 起点的文章内容是通过脚本输出的方式,普通的WEBBROWER方式抓取,只能抓到这个源码,我们看看通过 PhantomJS 抓取会是什么效果:

我们可以清晰的看到, PhantomJS 直接抓到了 起点脚本输出后的最终DOM 数据信息, 这才是我们想要的,PhantomJS 太棒了 !
总结:
我经常听到的一种争论就是他们担心SEO(Search Engine Optimization)。但是如果你对此做了正确的处理,这将不是一个问题:你可以有多种解决方式,从使用无界面的浏览器(headless browser),比如PhantomJS,在检测到网络爬虫的时候渲染HTML,到使用一些现有框架执行服务器端渲染。
完整的web栈无需浏览器—PhantomJS是一个无界面的WebKit浏览器引擎。
浙公网安备 33010602011771号