http://chenqx.github.io/2014/12/23/Spider-Advanced-for-Dynamic-Website-Crawling/
1 pip install -U selenium
需要调用本地浏览器 (会打开浏览器)
目前许多网站大量运用js脚本进行一些页面的处理,这些页面的抓取对爬虫是个挑战。这类页面的抓取,我用到了下面的方法
安装需要的软件
# Xvfb 模拟 Xwindows sudo apt-get install xvfb # 安装 python webkit包
添加增加下面的下载代码(增加的位置我后面说明)
webview = webkit.WebView()
webview.connect( 'load-finished', lambda v,f: gtk.main_quit() )
webview.load_uri( request.url )
gtk.main()
renderedBody = str(webview.execute_script('document.documentElement.innerHTML'))
# renderedBody 是执行后页面的内容
注意的上面的代码我没有说明写在哪里,网上很多例子都是说写 下载中间件(DownloaderMiddleware)里,这是有些问题的
evaluate函数是个新东西,其实很简单,就是在webpage环境下执行evaluate传入的回调函数,在这里面执行与phantom相关的操作可以避免web页面刺探phantom相关的设置信息。上面的代码就比较简单了,不啰嗦了。
模仿用户点击事件:
phantomJS提供了两种模仿点击事件的接口,一个是sendEvent,phantomJS事件触发器;一个是DOM事件触发器。
我们先看看第一个,语法如下
$ git clone git://github.com/n1k0/casperjs.git $ cd casperjs $ git checkout tags/0.6.9 $ ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs
你也可以直接下载打包好的文件(0.6.9.zip),解压后执行上述脚本的第4个命令.
然后检查安装是否成功:
$ casperjs --version 0.6.9
安装完毕, 现在可以开始写我们的脚本了.
注: casperjs 命令是用 Python 脚本编写, 也可以使用 Python 来执行:
$ python /path/to/casperjs/bin/casperjs CasperJS version 0.6.9 at /Users/niko/casperjs Usage: casperjs script.(js|coffee) [options...] Read the docs http://casperjs.org/
所以要确保你机器上的 Python 环境是OK的.
pip install scrapy-splashghost方案
pip install Ghost.py