淘宝上做网站可信吗,网红店的营销方式,网站建设公司推荐北京华网,信阳网站开发建设公司Scrapy是一个用于爬取网站数据并提取结构化信息的Python框架
一、Scrapy介绍
1.引擎#xff08;Engine#xff09; – Scrapy的引擎是控制数据流和触发事件的核心。它管理着Spider发送的请求和接收的响应#xff0c;以及处理Spider生成的Item。引擎是Scrapy运行的驱动力。…Scrapy是一个用于爬取网站数据并提取结构化信息的Python框架
一、Scrapy介绍
1.引擎Engine – Scrapy的引擎是控制数据流和触发事件的核心。它管理着Spider发送的请求和接收的响应以及处理Spider生成的Item。引擎是Scrapy运行的驱动力。
2.调度器Scheduler – 调度器负责接收引擎发送的请求并根据一定的策略如优先级、深度等将它们入队。当引擎需要新的请求时调度器会从队列中取出请求并返回给引擎。它确保了请求的有序处理。
3.下载器Downloader – 下载器负责根据Scrapy引擎发送的请求下载网页内容。它使用HTTP协议与网站服务器进行通信并将下载的网页内容作为响应返回给Scrapy引擎。下载器是Scrapy获取网页数据的核心组件。
4.Spiders – Spiders是Scrapy中用于定义爬取逻辑和解析网页内容的组件。它们根据定义的规则生成初始请求并处理下载器返回的响应从中提取出需要的数据Item或生成新的请求Request进行进一步的爬取
5.Item Pipelines – Item Pipelines负责处理Spider提取出的Item。它们可以执行各种任务如清洗数据、验证数据的完整性、存储数据到数据库或文件中。通过定义多个Pipeline可以灵活地处理数据满足不同的需求。
6.下载器中间件Downloader Middlewares – 下载器中间件位于Scrapy引擎和下载器之间用于处理请求和响应。它们可以修改请求如添加请求头、设置代理等或响应如压缩处理、重定向处理等从而控制Scrapy如何与网站交互。中间件是Scrapy扩展功能的重要机制。
7.Spider中间件Spider Middlewares – Spider中间件位于Scrapy引擎和Spiders之间用于处理Spider的输入即响应和输出即Item和新的请求。它们可以修改或丢弃响应处理异常甚至修改或丢弃Spider生成的Item和Request。Spider中间件提供了在Spider执行过程中插入自定义功能的能力。
各组件之间的数据流向如图所示
从初始URL开始Scheduler会将其交给Downloader进行下载下载之后会交给Spider进行分析Spider分析出来的结果有两种一种是需要进一步抓取的链接如 “下一页”的链接它们会被传回Scheduler另一种是需要保存的数据它们被送到Item Pipeline里进行后期处理详细分析、过滤、存储等
二.安装scrapy
pip install scrapy安装后只要在命令终端输入 scrapy提示类似以下结果代表已经安装成功 三、Scrapy应用示例
1、新建项目 在开始爬取之前必须创建一个新的Scrapy项目。进入自定义的项目目录中运行下列命令
scrapy startproject Spider其中 mySpider 为项目名称可以看到将会创建一个 mySpider 文件夹目录结构大致如下
mySpider/scrapy.cfgmySpider/__init__.pyitems.pypipelines.pysettings.pyspiders/__init__.py...scrapy.cfg: 项目的配置文件。mySpider/: 项目的Python模块将会从这里引用代码。mySpider/items.py: 项目的目标文件。mySpider/pipelines.py: 项目的管道文件。mySpider/settings.py: 项目的设置文件。mySpider/spiders/: 存储爬虫代码目录。
2、创建爬虫 在当前目录下输入命令将在mySpider/spiders目录下创建一个名为bd_test的爬虫并指定爬取域的范围
scrapy genspider bd_test baidu.com注意 第一个参数是爬虫名字不是项目名字 第二个参数是网站域名是允许爬虫采集的域名。比如baidu.com 不限制域名 可能爬到 zhihu.com 。后期可以更改但要先有生成的目录和文件结果
执行命令执行的是spiders中name
scrapy crawl baidu也可以脚本运行
from scrapy import cmdline
cmdline.execute(scrapy crawl qb.split())3、编写spiders class中的 name也是就是爬虫名一定是唯一的 allowed_domains域名 start_urls链接列表可写入多条按顺序一般一个 parse() 被调用时每个初始 URL 完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据提取数据生成 item以及生成需要进一步处理的 URL 的 Request 对象。
4、创建item 创建完 Spider 文件之后接着定义一个容器来保存要爬取的数据我们对items.py文件进行更改或者创建一个新的文件来定义 item 都行。 创建 Item 需要继承 scrapy.Item 类并且定义类型为 scrapy.Field 的字段。例如我们要爬取慕课网站课程的信息包括课程名称课程 URL课程图片 URL课程描述学习人数。
import scrapyclass MyreptileItem(scrapy.Item):# 在这里可以定义你需要的字段如name scrapy.Field()title scrapy.Field()url scrapy.Field()image_url scrapy.Field()introduction scrapy.Field()student scrapy.Field()当spiders调用时导入即可 5、pipelines.py 在Scrapy中Pipelines 是用来处理爬取到的数据Item的组件。它们可以执行一些清理、验证和持久化比如存储到数据库或文件的操作。列入存入redis 6、中间件middlewares 具体参考文章https://www.jianshu.com/p/2c524bfc11d1
参考文献同上