Scrapy 爬虫
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200424134050181.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMDM4NTY1,size_16,color_FFFFFF,t_70)
程序执行
- 引擎:Spider,你要处理哪一个网站?
- Spider:老大,我要处理XX.com
- 引擎:你把第一个需要处理的URL给我吧
- Spider:给你,XXXX.com
- 引擎:调度器,我这里有request请求,帮我排序入队一下
- 调度器:好的,马上处理
- 引擎:调度器,把你处理好的request请求给我
- 调度器:给你,这是我处理好的request请求
- 引擎:下载器,你按照老大的下载中间件的设置,帮我下载一下这个request请求
- 下载器:好的,给你,这是下载好的东西,(如果失败,这个request下载失败了,然后 引擎告诉调度器,这个请求下载失败了,记录下,等会再下载)
- 引擎:Spider,这个是下载好的东西,已经按照下载中间件处理过了,你自己处理下(responses默认是交给def parse()这个函数处理)
- Spider:(处理完数据之后对于需要跟进的URL)引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取的item数据
- 引擎:管道,这有个item需要你帮我处理下,调度器,有个需要跟进的URL帮我处理下,然后从第四步循环,知道获取到全部的信息
- 管道、调度器:好的,现在就做
只有当调度器中不存在任何request了,整个程序才会停止,也就是说,对于下载失败的URL,Scrapy也会重新下载
制作Scrapy爬虫四步:
新建项目
明确目标(items.py):明确要抓取的目标
制作爬虫(spider.py):制作爬虫开始爬取网页
存储内容(pipelines.py):设计管道存储爬取的内容