scrapy --重拾(1)

2020-04-08  本文已影响0人  周周周__

scrapy框架是python最出名的爬虫框架之一。之前用过,但是没有详细的记录过,现在需要进行整体系统的学习一遍。

一、python的异步爬虫框架

现在熟知的python 异步爬虫 有scrapy、tornado、aiohttp。 tornado 我个人是没有通过,aiohttp是异步框架(比较简单),第三方库完善程度也不是太好。所以现在用的最多的python爬虫还是scrapy。 可能很多人会疑问,python现在流行的异步是基于asyncio,也就是出现了aiohttp,那么scrapy为什么不用aiohttp呢?答案是scrapy出现的时候,还没有aiohttp什么鸟事。 我们都知道异步和同步的区别是:异步有回调,由开发者定义函数执行完的回调函数,同步则是由程序进行调控。所以说我们的异步都是基于事件循环

二、scrapy

scrapy很完善,完善的处理了很多大型爬虫搭建的基本功能。如果是小量爬虫,还是requests/aiohttp香。 scrapy能够完美的嵌入我们自己写的中间件,和搭配redis进行使用,这让它的功能更适合搭建大型爬虫。

这是网络上流传最多的图:

Scrapy --重拾(1)

万年不变的图.png

简单的巩固一下自己的知识:

基本的运转流程:
1、引擎从Spiders中获取到的最初的要爬取的请求(Requests)。
2、引擎安排请求(Requests)到调度器中,并向调度器请求下一个要爬取的请求(Requests)。
3、调度器返回下一个要爬取的请求(Request)给请求。
4、引擎从上步中得到的请求(Requests)通过下载器中间件(Downloader Middlewares)发送给下载器(Downloader),这个过程中下载器中间件(Downloader Middlerwares)中的process_request()函数就会被调用。
5、一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(Downloader Middlewares)中的process_response()函数,最后返回给引擎
6、引擎从下载器中得到上步中的Response并通过Spider中间件(Spider Middewares)发送给Spider处理,这个过程中Spider中间件(Spider Middlewares)中的process_spider_input()函数会被调用到。
7、Spider处理Response并通过Spider中间件(Spider Middlewares)返回爬取到的Item及(跟进的)新的Request给引擎,这个过程中Spider中间件(Spider Middlewares)的process_spider_output()函数会被调用到。
8、引擎将上步中Spider处理的及其爬取到的Item给Item管道(Piplline),将Spider处理的Requests发送给调度器,并向调度器请求可能存在的下一个要爬取的请求(Requests)
9、(从第二步)重复知道调度器中没有更多的请求(Requests)。

以上均是一字一码,复习不易,共同学习

上一篇 下一篇

猜你喜欢

热点阅读