最近在使用Python爬取网页内容时,总是遇到JS临时加载、动态获取网页信息的困难。例如爬取CSDN下载资源评论、搜狐图片中的“原图”等,此时尝试学习Phantomjs和CasperJS来解决这个问题。这第一篇文章当然就是安装过程及入门介绍。
一. 安装Phantomjs 下载地址:http:/// 在该文件夹下创建test.js文件,代码如下:
[javascript] view plaincopy
参考官方文档:http:///documentation/
1、脚本参数-arguments.js 同时其自带的examples文件夹中有很多模板代码,其中获取脚本参数代码如下: [javascript] view plaincopy
phantomjs examples/arguments.js arg0 agr1 arg2 arg3 在根目录新建文件loadpic.js,其代码如下:
[javascript] view plaincopy
phantomjs loadpic.js 短短5行代码让我第一次体会到了PhantomJS和调用脚本函数的强大,它加载baidu页面并存储为一张PNG图片,这个特性可以广泛适用于网页快拍、获取网页在线知识等功能。同时也感受到了似乎能够解决我最初的加载JS问题。
3、页面加载-Page Loading
A web page can be loaded, analyzed, and rendered by creating a web page object. 通过创建一个网页对象,一个网页可以被加载,分析和渲染。examples文件夹中的loadspeed.js脚本加载一个特殊的URL (不要忘了http协议) 并且计量加载该页面的时间。 [javascript] view plaincopy
phantomjs examples/loadspeed.js http://www.baidu.com 其中包括document.title获取网页标题和t=Date.now()-t计算网页加载时间。此时输出如下图所示,但会存在中文乱码,如何解决呢? 添加如下代码即可:
address = system.args[1]; phantom.outputEncoding="gbk"; 通过在网页上下文中对JavaScript代码进行计算,使用evaluate()方法。代码是在“沙箱(sandboxed)”中运行的,它没有办法读取在其所属页面上下文之外的任何JavaScript对象和变量。evaluate()会返回一个对象,然而它仅限制于简单的对象并且不能包含方法或闭包。 下面这段代码用于显示网页标题: [javascript] view plaincopy
[javascript] view plaincopy
5.DOM操作-DOM Manipulation 因为脚本好像是一个Web浏览器上运行的一样,标准的DOM脚本和CSS选择器可以很好的工作。这使得PhantomJS适合支持各种页面自动化任务。 参考page automation tasks 下面的 useragent.js(examples文件样本)将读取id 为myagent的元素的 textContent 属性: [javascript] view plaincopy
phantomjs examples/useragent.js 上面示例也提供了一种自定义user agent的方法。
使用JQuery及其他类库(Use jQuery and Other Libraries)。如果版本是1.6,你也可以把jQuery放入你的页面中,使用page.includeJs如下: [javascript] view plaincopy
即需要确保JavaScript代码中包括引用的页面存在。The Webpage instance具体用法参考前面官方文档。 6.网络请求及响应 – Network Requests and Responses 当一个页面从一台远程服务器请求一个资源的时候,请求和响应均可以通过 onResourceRequested 和 onResourceReceived 回调方法追踪到。文档示例 netlog.js: [javascript] view plaincopy
phantomjs examples/netlog.js http://www.baidu.com 输出部分内容: [plain] view plaincopy
下面显示了从英国广播公司网站获得典范的瀑布图(waterfall diagram): PS:其他本分参考官方文档,目录如下,examples中包括每个js对应的用途、github中源代码、Troubleshooting等。 二. 安装CasperJS 下载地址:http:/// 用CasperJs自动浏览页面-by:kiwi小白 CSDN PhantomJS安装及快速入门教程 Windows中Phantomjs + Casperjs安装使用方法 CasperJS 的安装和快速入门-oschina 使用 CasperJS 对 Web 网站进行功能测试-oschina 利用nodejs+phantomjs+casperjs采集淘宝商品的价格 [译]CasperJS,基于PhantomJS的工具包 最后希望文章对你有所帮助吧!如果有不足之处,还请海涵~ (By:Eastmount 2015-8-19 深夜4点半 http://blog.csdn.net/eastmount/) |
|