前言

最近在做一个天眼查的爬虫,直接用Scrapy爬会被识别为电脑,然后需要验证码,更改时间间隔都没用,后来发现是cookie的缘故,在请求天眼查的网页时发现cookie一直在变。所以Scrapy直接爬如果没办法解决验证码的问题是肯定失败,由于PhantomJS不是真正的浏览器,所以用PhantomJS也不行,所以最终的想到用Selenium控制Chrome浏览器来访问。写好发现设置好时间间隔,并不会出现验证码。最终代码写了3800多行,因为还涉及到N多的模拟点击,然后做测试发现要爬太久了,小公司一两分钟左右,但大公司可能要十多分钟,太难等,也太耗费电脑性能,所以我就想把爬虫放在服务器上跑,然后发现SSH命令是打开不了GUI程序的,运行爬虫也不能打开Chrome。直接报错:cannot open display,然后谷歌一下,发现了这个Xvfb这个软件。

Xvfb是在虚拟内存中执行所有图形操作,而不显示任何屏幕输出。相当于创建了一个虚拟显示器。

安装Xvfb和相关插件还有chrome浏览器:

1
sudo apt-get update && sudo apt-get install -y xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic xvfb x11-apps  imagemagick  google-chrome-stable

启动Xvfb服务

1
Xvfb -ac :7 -screen 0 1280x1024x8

设置DISPLAY环境变量

1
export  DISPLAY=:7

然后运行google-chrome发现没有报错了

运行爬虫,可以正常爬取,问题解决。