前言
大部分网页可以直接请求爬取,但是如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS渲染的到的一些结果,那简直没天理了。所以,我们需要有一些好用的工具来帮助我们像浏览器一样渲染JS处理的页面。
其中有一个比较常用的工具,那就是PhantomJS。
PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。
另外还有一个与PhantomJS配合使用的类库叫做Selenium,二者配合可以完成复杂JS渲染页面的爬取。
下面我们来讲解下二者的安装过程。
安装
PhantomJS
PhantomJS安装方法有两种,一种是下载源码之后自己来编译,另一种是直接下载编译好的二进制文件。然而自己编译需要的时间太长,而且需要挺多的磁盘空间。官方推荐直接下载二进制文件然后安装。
大家可以依照自己的开发平台选择不同的包进行下载
下载地址
当然如果你不嫌麻烦,可以选择
下载源码
然后自己编译。
下载解压之后将所在路径加到环境变量。
安装完成之后输入命令:
phantomjs -v
如果正常显示版本号,那么证明安装成功了。如果提示错误,那么请重新安装。
安装Selenium
Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。话说回来,PhantomJS不也是一个浏览器吗,那么 Selenium 支持不?答案是肯定的,这样二者便可以实现无缝对接了。
然后又有什么好消息呢?Selenium支持多种语言开发,比如 Java,C,Ruby等等,有 Python 吗?那是必须的!哦这可真是天大的好消息啊。
嗯,所以呢?安装一下 Python 的 Selenium 库,再安装好 PhantomJS,不就可以实现 Python+Selenium+PhantomJS 的无缝对接了嘛!PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与 Python 的对接,Python 进行后期的处理,完美的三剑客!
有人问,为什么不直接用浏览器而用一个没界面的 PhantomJS 呢?答案是:效率高!
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。
Selenium安装比较简单,如果有了Python,可以直接用pip安装。
pip install selenium
如果是Python3,则可以使用pip3。
pip3 install selenium
下载源码安装也可以,源码地址
解压之后直接运行如下命令即可:
python setup.py install
如此以来就完成了Selenium的安装。
后记
以上我们完成了PhantomJS和Selenium的安装,如果要学习更多内容,可以参考官方文档。
PhantomJS
Selenium