Scrapy框架
Scrapy介绍
爬虫相关框架有很多,scrapy是目前python中使用最广泛的框架,主要是它的相关扩展组件很多,可配置和可扩展性非常高。
Scrapy是一个基于Twisted的异步处理框架,是纯python实现的爬虫框架,使用它我们只需定制开发几个模块就可以轻松实现一个爬虫。
Scrapy框架组件,数据流及项目结构介绍
1.组件
- Engine: 引擎,处理整个系统的数据流处理,触发事务,是整个框架的核心。
- item: 项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该item对象。
- Scheduler: 调度器,介绍引擎发过来的请求并将其加入队列中,在引擎再次请求的时候将请求提供个引擎。
- Downloader: 下载器,下载网页内容,并将网页内容返回给蜘蛛。
- Spiders: 蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。
- Item Pipeline: 项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗,验证和存储数据。
- Downloader Middlewares.下载器中间件,位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应。
- Spider Middlewares: 蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要处理想蜘蛛输入的响应和输出的结果及新的请求。
2.数据流
-
Engine 首先打开一个网站,找到处理该网站的Spider,并向该Spider请求第一个要爬取的URL.
-
Engine 从Spider获取到第一个要爬取的URL,并通过Scheduler以Request的形式调度。
- Engine 向Scheduler请求下一个要爬取的URL。
- Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过Downloader Middlewares转发给Downloader下载。
-
一旦页面下载完毕,Downloader生成该页面的Response,并将其通过Downloader Middlewares发送给Engine.
-
Engine从下载器中接受到Response,并将其通过Spider Middlewares发送给Spider处理。
-
Spider处理Response,并返回提取到的Item及新的Request给Engine.
-
Engine将Spider返回的Item给Item Pipeline,将新的Request给Scheduler.
-
重复(2)步到第(8)步,知道Scheduler中没有更多的Request,Engine关闭该网站,爬取结束。
通过这些组件之间的协作和对异步处理的支持,Scrapy最大限度地利用了网络带宽,很大程度上提高了数据获取的效率。
3.项目结构
scrapy与其他框架不同之处在于,它是通过命令行来创建项目,创建完之后可以用IDE打开项目编写代码。创建项目代码及结构展示:
整体项目结构
各个文件的更能描述:
- Scrapy.cfg: 它是Scrapy项目的配置文件,定义了项目的配置文件路径,部署相关信息等内容。
- items.py: 它定义Item数据结构,所有的Item的定义都可以放在这里。(类似于Java中的Beam)
- pipelines.py: 它定义Item Pipeline的实现,所有的Item Pipeline的实现都在这里。
- settings.py: 它定义项目的全局配置。
- middlewares.py: 它定义Spider Middlewares 和 Downloader Middlewares的实现。
- spiders: 其内包含一个个Spider的实现,每个Spider都有一个文件。
这是Scrapy框架的基本架构,数据流及项目结构。
; 爬取天堂图片网实例:
创建项目:
生成项目:
需要进入刚刚创建的项目目录下。
通过IDE打开项目编写代码:
在爬之前先想好你需要什么,然后在item中定义相关变量。
这一步最关键,写出爬取网站的逻辑,爬取的相关函数可以查看Scrapy的相关文档。同样也可以用BeautifulSoup或正则都可以。
在Settings.py中设置一些反爬配置,比如Robots协议,cookies,User-Agent,让服务器认为你是正常访问的,而不是爬虫。
最后在命令行中输入运行命令:
53, 3851)}
2021-06-06 19:37:16 [scrapy.core.engine] INFO: Spider closed (shutdown)
C:\Users\24847\crawlpicture>scrapy crawl ivsky
得到了相关图片信息:
2021-06-06 19:37:16 [scrapy.core.scraper] DEBUG: Scraped from
还有一些获取后直接存入文件的命令:
例:
C:\Users\24847\crawlpicture>scrapy crawl ivsky -o ivsky.csv
将相关数据存入csv文件中。
总结:
介绍了Scrapy框架相关理论和实例,Scrapy有很多组件,可以看到该实例写很少的代码就可以爬取相关数据。并且不同于requests,Scrapy已经为我们整理好了架构,我们只需关注需要什么数据和编写逻辑就好了。
Original: https://blog.csdn.net/TechnologyShare/article/details/117636404
Author: TechnologyShare
Title: Scrapy爬虫框架结构及实例
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790157/
转载文章受原作者版权保护。转载请注明原作者出处!