Scrapy爬虫框架结构及实例

Scrapy框架

Scrapy介绍

爬虫相关框架有很多,scrapy是目前python中使用最广泛的框架,主要是它的相关扩展组件很多,可配置和可扩展性非常高。
Scrapy是一个基于Twisted的异步处理框架,是纯python实现的爬虫框架,使用它我们只需定制开发几个模块就可以轻松实现一个爬虫。

Scrapy框架组件,数据流及项目结构介绍

Scrapy爬虫框架结构及实例
1.组件
  • Engine: 引擎,处理整个系统的数据流处理,触发事务,是整个框架的核心。
  • item: 项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该item对象。
  • Scheduler: 调度器,介绍引擎发过来的请求并将其加入队列中,在引擎再次请求的时候将请求提供个引擎。
  • Downloader: 下载器,下载网页内容,并将网页内容返回给蜘蛛。
  • Spiders: 蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。
  • Item Pipeline: 项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗,验证和存储数据。
  • Downloader Middlewares.下载器中间件,位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应。
  • Spider Middlewares: 蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要处理想蜘蛛输入的响应和输出的结果及新的请求。

2.数据流

  1. Engine 首先打开一个网站,找到处理该网站的Spider,并向该Spider请求第一个要爬取的URL.

  2. Engine 从Spider获取到第一个要爬取的URL,并通过Scheduler以Request的形式调度。

  3. Engine 向Scheduler请求下一个要爬取的URL。
  4. Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过Downloader Middlewares转发给Downloader下载。
  5. 一旦页面下载完毕,Downloader生成该页面的Response,并将其通过Downloader Middlewares发送给Engine.

  6. Engine从下载器中接受到Response,并将其通过Spider Middlewares发送给Spider处理。

  7. Spider处理Response,并返回提取到的Item及新的Request给Engine.

  8. Engine将Spider返回的Item给Item Pipeline,将新的Request给Scheduler.

  9. 重复(2)步到第(8)步,知道Scheduler中没有更多的Request,Engine关闭该网站,爬取结束。

通过这些组件之间的协作和对异步处理的支持,Scrapy最大限度地利用了网络带宽,很大程度上提高了数据获取的效率。

3.项目结构
scrapy与其他框架不同之处在于,它是通过命令行来创建项目,创建完之后可以用IDE打开项目编写代码。创建项目代码及结构展示:

Scrapy爬虫框架结构及实例

Scrapy爬虫框架结构及实例
整体项目结构
Scrapy爬虫框架结构及实例
各个文件的更能描述:
  • 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框架的基本架构,数据流及项目结构。

; 爬取天堂图片网实例:

创建项目:

Scrapy爬虫框架结构及实例
生成项目:

Scrapy爬虫框架结构及实例
需要进入刚刚创建的项目目录下。

通过IDE打开项目编写代码:

在爬之前先想好你需要什么,然后在item中定义相关变量。

Scrapy爬虫框架结构及实例

这一步最关键,写出爬取网站的逻辑,爬取的相关函数可以查看Scrapy的相关文档。同样也可以用BeautifulSoup或正则都可以。

Scrapy爬虫框架结构及实例
在Settings.py中设置一些反爬配置,比如Robots协议,cookies,User-Agent,让服务器认为你是正常访问的,而不是爬虫。
Scrapy爬虫框架结构及实例
Scrapy爬虫框架结构及实例

最后在命令行中输入运行命令:
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

Scrapy爬虫框架结构及实例
将相关数据存入csv文件中。

总结:

介绍了Scrapy框架相关理论和实例,Scrapy有很多组件,可以看到该实例写很少的代码就可以爬取相关数据。并且不同于requests,Scrapy已经为我们整理好了架构,我们只需关注需要什么数据和编写逻辑就好了。

Original: https://blog.csdn.net/TechnologyShare/article/details/117636404
Author: TechnologyShare
Title: Scrapy爬虫框架结构及实例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790157/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球