Python爬虫学习 9 —— scrapy爬虫框架

  Scray是一个功能强大且非常快速的爬虫框架,具体学习它的基本使用。



一、scrapy介绍

scrapy:它是一个爬虫框架结构,它包含了五个模块和两条之间线路:
在这里插入图片描述
主要模块

模块描述
SPIDERS发送请求,处理响应,需要用户自己编写(配置)
ENGINE接受request请求并大宋到SCHEDULER模块
SCHEDULER调度请求,向ENGINE发送真实的请求
DOWNLOADER连接互联网,爬取相关网页,生成response对象
ITEM PIPELINES手机爬取得到的内容,需要用户自己编写(配置)


二、框架模块介绍

Engine模块

  • 控制所有模块之间的数据流
  • 根据条件触发事件
  • 不需要用户修改

Downloader模块

  • 根据请求下载网页
  • 不需要用户修改

Scheduler模块

  • 对于所有爬取请求进行管理调度
  • 不需要用户修改

Spider模块

  • 解析Downloader返回的response响应
  • 产生爬取项(scpaped item)
  • 产生额外的爬取请求(request)

Downloader Middleware模块

  • 一流水线的方式处理Spider产生的爬取项
  • 由一组操作顺序组成,类似流水线,每一个操作是一个Item Pipeline类型
  • 可能的操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库

Downloader Middleware模块
 目的:实现Engine、scheduler和downloader之间进行用户可配置的控制
 功能:修改、丢弃、新增请求或响应

Spider Middleware模块
 目的:对请求和爬取项的再处理
 功能:修改、丢弃、新增请求或爬取项



三、requests 和 scrapy

对比差异

requestsscrapy
页面级爬虫网站级爬虫
功能库框架
并发性考虑不足并发性好,性能较高
重点在于页面下载字典在于爬虫框架
定制灵活深度定制困难
上手十分简单入门稍难

如何选择
requests:只需要下载某个页面的局部内容时选择request构建小型爬虫
scrapy :当需要批量下载网站各个页面时,考虑使用scrapy



四、scrapy命令行

scrapy是为了持续运行设计的专业爬虫框架,提供操作的scrapy命令行

命令行格式
> scrapy <command> [options] [args]

scrapy命令

命令说明格式
startproject创建一个新工程scrapy startproject <name> [dir]
genspider创建一个爬虫scrapy genspider [options] <name> <domain>
crawl运行一个爬虫scrapy crawl <spider>
settings获取爬虫配置信息scrapy settings [options]
list列出工程中所有爬虫scrapy list
shell启动该URL调试命令scrapy shell [url]

scrapy命令行逻辑
为什么scrapy采用命令行创建和运行爬虫?

  • 命令行更容易自动化,适合脚本控制
  • 本质上,scrapy是给程序员用的,功能(比界面)更重要


五、scrapy爬虫基本使用

scrapy使用步骤

step1:创建一个工程和Spider模板
step2:编写Spider
step3:编写Item Pipeline
step4:优化配置策略


Scrapy爬虫的数据类型

Request类
class scrapy.http.Request()

  • Request对象表示一个HTTP请求
  • 由Spider生成,由Downloader执行
属性/方法描述
.urlRequest对应的请求URL地址
.method对应的请求方法,’ GET’ ‘POST’ 等
.headers字典类型风格的请求头
.body请求内容主题,字符串类型
.meta用户添加的扩展信息,在Scrapy内部模块键传递信息使用
.copy()复制该请求

Response类
class scrapy.http.Response()

  • Response对象表示一个HTTP响应
  • 有Downloader生成,由Spider处理
属性/方法描述
.urlRequest对应的请求URL地址
.statusHTTP状态名,默认值为200
.headersResponse对应的头部信息
.bodyResponse对应的内容信息,字符串类型
.flags一组标记
.request产生Request类型对应的Request对象
.copy()复制该响应

Item类
class scrapy.item.Item()

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


第九篇python爬虫学习笔记完结啦 cheers ??

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值