scrapy的数据处理流程
近日深入scrapy源码,做以下笔记:
1. Engine打开一个domain,定位到控制domain的spider,并向spider请求第一个url用来抓取
2. Engine从spider得到用来抓取的第一个url,并作为request放到scheduler中
3. Engine向scheduler请求下一个抓取的url
4. scheduler返回下一个抓取的url给engine,engine将其发送到downloader,通过downloader middleware(请求方向)
5. 一旦网页完成下载downloader使用下载的页面生成一个response并将其发送到engine,通过downloader middleware(响应方向)
6. engine接收从downloader发来的response并将其发送到spider进行处理,通过spider middleware(输入方向)
7. spider处理response并返回scraped items和新的request给engine
8. engine发送由spider返回的scraped item给item pipeline,发送spider返回的request给scheduler
9. 重复第二步直到scheduler没有多余的request,此时engine关闭domain
近日深入scrapy源码,做以下笔记:
1. Engine打开一个domain,定位到控制domain的spider,并向spider请求第一个url用来抓取
2. Engine从spider得到用来抓取的第一个url,并作为request放到scheduler中
3. Engine向scheduler请求下一个抓取的url
4. scheduler返回下一个抓取的url给engine,engine将其发送到downloader,通过downloader middleware(请求方向)
5. 一旦网页完成下载downloader使用下载的页面生成一个response并将其发送到engine,通过downloader middleware(响应方向)
6. engine接收从downloader发来的response并将其发送到spider进行处理,通过spider middleware(输入方向)
7. spider处理response并返回scraped items和新的request给engine
8. engine发送由spider返回的scraped item给item pipeline,发送spider返回的request给scheduler
9. 重复第二步直到scheduler没有多余的request,此时engine关闭domain