初识scrapy框架
首先我认为scrapy框架和编写的普通爬虫文件没有什么区别 唯一不同的是它可以把你得各种爬虫需求进行封装 而一些中间件也会帮助你实现你的爬虫需求 一般来说只需要编写items.py spiders settings pipelines这四个模块的内容 这样简单明了 高效便捷 不得不提的是scrapy框架实现去重简直太优秀 Scrapy 使用了 Twisted['twɪstɪd] 异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求 必须夸 加鸡腿
scrapy框架流程,结构
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
Downloader Middlewares(下载中间件):可以自定义扩展下载功能的组件(代理、cokies等)。
Spider Middlewares(Spider中间件):可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)
啊啊啊啊啊啊 脑壳疼 这里有简单的图
入手使用scrapy框架
1.创建项目:
先切换到自定义的目录下
执行命令:
scrapy startproject (爬虫名字:spiderproject)
2.创建(普通)文件
切换到项目目录下 进入项目主目录 创建爬虫文件
执行命令:
scrapy genspider baiduspider 域名(baidu.com)
创建文件
切换到项目目录下 进入项目主目录 创建爬虫文件
执行命令:
scrapy genspider baiduspider 域名(baidu.com)
3.用pycharm打开项目
4.运行爬虫文件
先切换到爬虫文件所在目录
命令行:scrapy crawl (爬虫文件名字)
scrapy框架如何工作
启动爬虫:
Scrapy框架为Spider的 start_urls 属性中的每个url创建了Request 对象,并将 parse 方法作为回调函数(callback)赋值给了requests,而requests对象经过调度器的调度,执行生成response对象并送回给parse() 方法进行解析,所以请求链接的改变是靠回调函数实现的。
yield scrapy.Request(self.url, callback=self.parse) <必须有>
总结:
HOW scrapy框架协调工作
1.spider的yield将request发送给engine
2.engine对request进行排队处理 不做任何操作 在scheduler需要时返回给scheduler
3.scheduler生成request交给engine
4. engine拿到request通过middleware发送给downloader
5.downloader在获取到response后 经过middleware发送给engine
6. engine在获取到response后,返回给spider,spider会对response进行处理 解析出items或者requests
7.将解析出来的items或者requests,items 发送给pipelines,将requests发送给scheduler
8.只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求