一般想要自动化搜集网页上的资料时,普遍都会使用像BeautifulSoup或Selenium套件开发Python网页爬虫来取得,但是,如果所要爬取的资料量较大,拥有复杂的逻辑处理及效率的要求,这时候就会建议使用Scrapy框架,来帮助开发人员建立一个维护性较好的Python网页爬虫。
而要使用Scrapy框架来开发大型的Python网页爬虫专案前,本文就先来带大家了解一下Scrapy框架的以下三个基本观念:
Scrapy框架是什么Scrapy框架模组Scrapy框架执行执行流程一、Scrapy框架是什么
Srapy是一个网页爬虫「框架」,拥有完整的Python网页爬虫开发功能,也提供开发人员能够进行客制化,并且,有一定的专案架构及执行流程,所以在未来的维护上较为容易。
另外,Scrapy框架是基于Twisted非同步网络框架所建立的,执行效率也非常的好,适用于大型的Python网页爬虫专案。而Scrapy框架与常应用于网页爬虫的BeautifulSoup及Selenium套件比较,可以参考「python」BeautifulSoup,Selenium,Scrapy三大爬虫工具比较文章。
二、Scrapy框架模组
Scrapy框架是由以下5个主要模组结合而成,各自有负责的职责,来达成有效率的非同步Python网页爬虫,其中每个模组的功能说明如下:
SPIDERS(爬虫程式):撰写Python网页爬虫程式码的地方,向ENGINE(引擎)发送网页请求,以及将ENGINE(引擎)所接收的回应结果进行解析与爬取。ENGINE(引擎):Scrapy框架的核心模组,就像汽车的引擎一样,负责控制各个模组、传递请求及资料。SCHEDULER(调度器):将ENGINE(引擎)所接收的SPIDERS(爬虫程式)请求进行列队,也就是排队的意思,来调度请求的顺序。DOWNLOADER(下载器):负责下载ENGINE(引擎)接收到SCHEDULER(调度器)调度请求的网页HTML原始码,提供回应结果给ENGINE(引擎) 。ITEM PIPELINE(资料模型管道):将SPIDERS(爬虫程式)所取得的资料进行后续处理,像是资料清理、存入资料库(例:MySQL)或存入档案文件(例:CSV、JSON)等。
三、Scrapy框架执行流程
对Scrapy框架的5个主要模组有一个基本的认识后,各个模组间的关系及执行流程又是什么呢?先来看一下Scrapy框架官方文件的流程图:
1. ENGINE(引擎)接收SPIDERS(爬虫程式)所发送的一至多个请求。
2. ENGINE(引擎)将请求传递给SCHEDULER(调度器)进行列队。
3. ENGINE(引擎)向SCHEDULER (调度器)提取下一个所要发送的请求。
4.ENGINE (引擎)将请求传递给DOWNLOADER(下载器)。
5.DOWNLOADER(下载器)将ENGINE (引擎)传递的请求网页HTML原始码下载下来,并且回应结果给ENGINE(引擎)。
6. ENGINE(引擎)将回应的结果传递给SPIDERS(爬虫程式)。
7. SPIDERS(爬虫程式)进行结果的解析及资料的爬取,组成ITEMS,传递给ENGINE(引擎)或发送新的请求。
8. ENGINE(引擎)判断SPIDERS(爬虫程式)所传递过来的如果是ITEMS(资料),就会传递给ITEM PIPELINES(资料模型管道),进行后续的资料清理及储存等。反之,如果传递过来的是新的请求,也就是相当于第一个步骤,接着,传递给SCHEDULER(调度器),以此类推,重复这样的流程,直到SCHEDULER(调度器)没有请求为止。
小编将Scrapy框架的执行流程,经过简化后,重新绘制如下图,对于学习来说会比较清楚明了:
四、小结
本文简单介绍了Scrapy是一个功能完整与快速的Python网页爬虫框架,包含5个主要模组,各司其职,藉由ENGINE(引擎)来进行整合,并且依照一定的执行流程,来达成非同步的网页资料爬取,适用于大型且复杂的Python网页爬虫专案,希望接下来的系列教学内容能够帮助大家对Scrapy框架有一个基本的认识,如果有想要补充的内容或任何想法,欢迎在底下留言和我交流。
#python#
举报/反馈

数码科技解答

17.5万获赞 1.6万粉丝
随着数码产品的不断升级换代,我们也面临着各种各样的问题。如何使用这些产品才能更好地满足我们的需求?如何解决遇到的技术难题?如何选择合适的数码产品?这些都是我们需要面对的问题。作为一名数码科技解答者,我将致力于为大家提供最准确、最实用的解答。无论您是初学者还是专业人士,无论您遇到的是什么问题,我都会尽我所能为您提供帮助。让我们一起探索这个充满无限可能的数码世界!
金牌宠粉官,IT主管,优质数码领域创作者,本地资讯创作者,活力创作者
关注
0
0
收藏
分享