今天来给大家讲解一下Python的一些模块的优缺点:
首先大家要知道Python是自带:urllib、urllib2这两个库的
第三方库是我在项目中用得最多的库:Requests的库
框架也是我在项目中用得最多的,也是面试问得最多的:Scrapy框架
urllib 和 urllib2 模块都做与请求 URL 相关的操作,但他们提供不同的功能。
urllib2:urllib2.urlopen 可以接受一个 Request 对象或者 url,(在接受 Request 对象时候,并以
此可以来设置一个 URL 的 headers),urllib.urlopen 只接收一个 url。
urllib 有 urlencode,urllib2 没有,因此总是 urllib,urllib2 常会一起使用的原因。
scrapy 是封装起来的框架,它包含了下载器,解析器,日志及异常处理,基于多线程,twisted 的
方式处理,对于固定单个网站的爬取开发,有优势,但是对于多网站爬取,并发及分布式处理方面,不够灵活,不便调整与括展。
request 是一个 HTTP 库, 它只是用来,进行请求,对于 HTTP 请求,他是一个强大的库,下载,
解析全部自己处理,灵活性更高,高并发与分布式部署也非常灵活,对于功能可以更好实现
Scrapy 优点:
scrapy 是异步的
采取可读性更强的 xpath 代替正则;
强大的统计和 log 系统;
同时在不同的 url 上爬行;
支持 shell 方式,方便独立调试;
写 middleware,方便写一些统一的过滤器;
通过管道的方式存入数据库;
Scrapy 缺点:
基于 python 的爬虫框架,扩展性比较差;
基于 twisted 框架,运行中的 exception 是不会干掉 reactor,并且异步框架出错后是不会停掉
其他任务的,数据出错后难以察觉。