Python网络爬虫框架 Scrapy简介

Scrapy是一个强大的Python爬虫框架,它包括Engine、Scheduler、Downloader、Spider和ItemPipeline等核心模块,以及DownloaderMiddleware和SpiderMiddleware两个中间件。用户主要在Spider和ItemPipeline中编写代码,用于解析网页和处理爬取数据。Scrapy通过命令行工具进行项目创建、爬虫生成、运行等操作,支持Request和Response对象进行网络交互,并提供了Item类来封装爬取信息。其设计使得数据流在框架内高效流转,方便开发者构建专业网络爬虫。

Scrapy 网络爬虫框架

Scrapy的安装
cmd 执行:
pip install scrapy

测试安装:
scrapy -h
Scrapy介绍

Scrapy不是一个函数功能库,而是一个爬虫框架。

​ 爬虫框架:

爬虫框架是实现爬虫功能的一个软件结构和功能组件集合;
爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫;
Scrapy爬虫框架结构

在这里插入图片描述

数据流的过程:

①:Engine从Spider处获取爬取请求(Request)

②:Engine将爬取请求转发给Scheduler,用于调度

③:Engine 从Scheduler处获取下一个要爬取的请求

④:Engine将爬取请求通过中间件发送给Downloader

⑤:爬虫网页后,Downloader形成相应(Response)通过中间件发给Engine

⑥:Engine将收到的响应通过中间件发送给Spider处理

⑦:Spider处理响应后产生爬取项(scraped Item)和新爬取请求(Requests)给Engine

⑧:Engine将爬取项发送给Item Pipeline(框架出口)

⑨:Engine将爬取请求发送给Scheduler

补充

Engine控制各模块数据流,不间断从Scheduler处爬取请求,直至请求为空;

框架入口:Spider的初始爬取请求

框架出口:Item Pipeline

爬虫结构介绍----->五个模块+二个中间件

#————————————————————————————————————————

Engine -----不需要用户修改

(1)控制所有模块之间的数据流

(2)根据条件触发事件

Downloader-----不需要用户修改

根据请求下载网页

Scheduler-----不需要用户修改

对所有爬取请求进行调度管理

Spider-----需要用户编写配置代码

(1)解析Dowloader返回的响应(Response)

(2)产生爬去项(scraped item)

(3)产生额外的爬取请求(Request)

Item Pipelines----需要用户编写配置代码

(1)以流水线方式处理Spider产生的爬取项

(2)由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型

(3)可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库

#————————————————————————————————————————

Downloader Middleware-----用户可以编写配置代码

目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制

功能:修改、丢弃、新增请求和响应

Spider Middleware -----用户可以编写配置代码

目的:对请求和爬取项的再处理

功能:修改、丢弃、新增请求或爬取项。

#————————————————————————————————————————

Scrapy 命令行
Scrapy常用命令
命令说明格式
startproject创建一个新工程scrapy startproject [dir]
genspider创建一个爬虫scrapy genspider [option]
settings获取爬虫配置信息scrapy settings [options]
crawl运行一个爬虫scrapy crawl
list列出工程中所有爬虫scrapy list
shell启动URL调试命令行scrapy shell [url]
Scrapy 采用命令行创建和运行爬虫的原因:

命令行更容易自动化,适合脚本控制。本质上,Scrapy是给程序员用的,功能更重要,而不是界面。

Scrapy爬虫的数据类型
Request类

Request对象表示一个HTTP请求,由Spider生成,由Downloader执行。

属性或方法说明
.urlRequest对应的请求URL地址
.method对应的请求方法,‘GET’ 'POST’等
.headers字典类型风格的请求头
.body请求内容主体,字符串类型
.meta用户添加扩展信息,在Scrapy内部模块传递信息使用
.copy()复制该请求
Response类

Response对象表示一个HTTP响应,由Downloader生成,由Spider处理

属性或方法说明
.urlReponse对应的URL地址
.statusHTTP状态码,默认是200
.headersReponse对应的头部信息
.bodyResponse对应的内容信息,字符串类型
.flags一组标记
.request产生Response类型对应的Request对象
.copy()复制该响应
Item类

Item对象表示一个从HTML页面中提取的信息内容,由Spider生成,由Item Pipeline处理;Item类似字典类型,可以按照字典类型操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大脑经常闹风暴@小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值