学习和问题记录
目前业务中有用到爬虫的需求,上次做爬虫还是两年前了,当时没有做系统的学习,现在的业务经常会有爬虫的需求,这里记录一下系统的学习和遇到的问题
scrapy
以前做的爬虫需求就是使用request和一些库来做,这次试试框架,做下对比。
结构图
各组件作用
1、spiders,解析响应生产结果,提取数据和url,发送给engine
2、engine,核心,整个系统数据流处理,负责数据在不同模块间的传递
3、scheduler,调度器,将引擎发过来的请求加入队列,并在引擎请求时发送给引擎
4、Downloader,下载engine发送的requests请求的网页内容,发送给spider
5、Downloader middlewares,处于scrapy的request是和responses之间的处理模块,可以自定义下载、设置代理、请求头、以及随机延时请求发送
6、itempipeline:数据持久化操作
7、spider middlewares:engine和spider之间框架,可自定义request请求和responses过滤
Scheduler中不存在request时程序停止,请求失败scrapy会重新请求
执行