爬虫方法对比

最近在学习Python抓取数据,之前发了几篇爬虫小白的文章,了解了不同的方法进行数据的爬取。

(1)Python+Selenium+ChromeDriver

(2)Requests库

(3)Scrapy框架

当然可以组合使用,使用scrapy中集成selenium爬虫使用,以及selenium+requests进行数据爬取,视个人需求而定。

在博客上看到了将一个requests库和scrapy框架比较的总结,分享给大家。
爬虫方法对比_第1张图片
Requests是一个功能十分强大的库,它能够满足大部分网页数据获取的需求。其工作原理是向服务器发送数据请求,至于数据的下载和解析,都需要自己处理,因而灵活性高;而由于scrapy框架的封装,使得灵活性降低。在没有明确需求之前,可以先选择requests库请求网页数据,而在业务实战中产生实际需求时,再考虑Scrapy框架。

Selenium是Web自动化测试工具集,最初是为了网站自动化测试开发的,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等,也包括PhantomJS。PhantomJS是一个无头浏览器,运行不会跳出相应的浏览器,运行效率相对较高,在调试中可以先换成Chrome,方便调试,最后再换成PhantomJS即可。但是去年Chrome和Firefox已经相继推出无头浏览器模式。其实Selenium+HeadlessFirefox/Chrome跟Selenium+Friefox/Chrome的区别就是实例化的时候传个参数而已。对于一般网站来说scrapy、requests等都可以爬取,但有些信息需要执行js才能显现。使用Selenium爬虫缺点:

(1)速度慢。每次运行爬虫都打开一个浏览器,如果没有设置,还会加载图片、JS等等一大堆东西;

(2)占用资源太多。即便换成无头浏览器,也都是打开浏览器,而且很多网站会验证参数。

(3)对网络的要求会更高。加载了很多可能没有价值的补充文件(如css,js和图像文件)。

与仅仅请求真正需要的资源(使用单独的HTTP请求)相比,这可能会产生更多的流量。

爬取规模不能太大。

至于使用哪种爬虫方式,可以取决于个人的实际需求。

你可能感兴趣的:(测试)