• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
皇图霸业谈笑间
更高、更快、更强
博客园    首页    新随笔    联系   管理    订阅  订阅
phantomjs—webkit对DOM结构的解析

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

执行过程截图如下:

 

让我们看下对起点文章内容进行抓取的试验:

找一篇起点的文章:

http://read.qidian.com/BookReader/2998502,48197196.aspx
 
看下文章源码结构:
 

 

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

 

 

我们可以清晰的看到, PhantomJS 直接抓到了 起点脚本输出后的最终DOM 数据信息, 这才是我们想要的,PhantomJS 太棒了 !

 

 

总结:

我经常听到的一种争论就是他们担心SEO(Search Engine Optimization)。但是如果你对此做了正确的处理,这将不是一个问题:你可以有多种解决方式,从使用无界面的浏览器(headless browser),比如PhantomJS,在检测到网络爬虫的时候渲染HTML,到使用一些现有框架执行服务器端渲染。

 

完整的web栈无需浏览器—PhantomJS是一个无界面的WebKit浏览器引擎。

 

 

 

 

 
posted on 2013-12-10 14:06  布颜书  阅读(824)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3