您的当前位置:首页正文

记录 ghost.py 设置proxy的过程

来源:华拓网
  • 因为要做爬虫,遇到很多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()