• 欢迎来到本博客,希望可以y一起学习与分享

scrapy进阶(三)– 其余js动态渲染网页爬取工具

Python benz 3年前 (2018-10-20) 87次浏览 0个评论 扫描二维码
文章目录[隐藏]

PyVirtualDisplay 无界面运行Chrome

Chrome浏览器是有界面的,需要在有界面的系统中才能运行。如果像Linux服务器这样的无界面系统,直接使用Chrome浏览器是不行的,需要借助PyVirtualDisplay 才能在无界面系统下运行Chrome浏览器。PyVirtualDisplay 不能在Windows系统正常运行,可以在Linux系统下运行。

selenium + chromedriver 如何实现无界面爬取

在使用selenium爬取12306的过程中,发现使用phantomjs无法爬取,使用chromedriver就可以,应该是phantomjs被网站检测出来后封禁了,使用chromedriver又会显示界面,爬取效率低。
现在有两点疑问,google了好久都没找到有效的解决方法
1.如何伪装phantomjs,尽最大可能的伪装
2.如何设置chromedriver,使其不显示界面,或者还有什么其他方法提高爬取效率
通过PyVirtualDisplay可以实现你的需求,大概代码就是这样:

PyVirtualDisplay 运行报错

PyVirtualDisplay 运行的时候可能会报错:No such file or directory。其实是缺少了xvfb或者是 xvfbwrapper这两个东西。使用命令安装就好了:
xvfb:sudo apt-get install xvfb
xvfbwrapper:pip install xvfbwrapper
更详细的可以阅读这里:https://stackoverflow.com/questions/32173839/

Scrapy-Splash scrapy提供的解决方案

splash是scrapy提供的获取网页信息都是js加载出来的,并且会有ajax异步加载的动态网页的一个解决方案。相比于selenium,splash支持分布式,是轻量级的,效率高,但是稳定性比selenium的Chrome差一些。
Scrapy-Splash的GitHub项目地址:https://github.com/scrapy-plugins/scrapy-splash。详细的教程自己寻找。

Selenium Grid

Selenium有三大组件,Selenium Grid就是其中之一而作用就是分布式执行测试。支持分布式。教程自己找。

Splinter 网页自动化测试工具

Splinter和selenium一样是网页自动化测试工具,Splinter也能调用浏览器,和selenium相像。
Splinter的GitHub项目地址:https://github.com/cobrateam/splinter
教程自己找。


文章 scrapy进阶(三)– 其余js动态渲染网页爬取工具 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!