-
因为要做爬虫,遇到很多js动态解析的页面,但是scrapy无法提取js动态加载的数据,在使用了
selenium + phantomJS
之后解决了这个问题,同时也写好了请求中间件,以为到此这种问题就算完美解决了, BUT......在一次偶然的情况之下,我本地开着SSR代理软件在谷歌上查资料,忘记关闭SSR了,然后运行爬虫时就报错了,经过各种测试拍错,发现问题就出在使用了SSR代理上,得出结论 phantomjs 和本地的SSR client冲突,至于原因,研究了两天没搞明白,在Stack Overflow上提问了,到现在没人回我,也尝试了各种phantomjs设置代理的办法甚至更换了webdrive,但是依然无法解决爬虫报错的问题,今天看到有人推荐ghost.py,抱着试一试的态度尝试,结果竟然ok了,好激动,上边是情景,下边是过程: -
下载安装
- 环境说明:
win10 + python3.6 -
依赖
1.官网明确说明:ghost.py requires either (preferred) or bindings:
ghost.py需要PySide或者PyQt依赖,所以首先下载这两个其中任意一个(个人推荐) ,PySide好像又需要一个什么别的依赖,而且好像在python3的环境下报错,反正有报错,具体情况到写文章的时候忘记了,所以推荐
2.安装 ghost.py
pip install ghost.py
安装完成后就可以用了
- 环境说明:
-
使用
这是一个自己测试用的python文件,这个url需要FQ才能使用,所以用到了SSR Client
from ghost import Ghost,Session
url = 'https://doub.io/dbrj-4/'
g = Ghost()
se = Session(g, display=False, wait_timeout=60)
se.set_proxy(type_='https', host='127.0.0.1', port=1083)
se.open(url)
data = se.content
with open('doub_2.html', 'wb+') as f:
content = data.encode('UTF-8')
f.write(content)
f.close()
print('---done---')
g.exit()