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

对比差异

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

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



四、scrapy命令行

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

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

scrapy命令

命令 说明 格式
startproject 创建一个新工程 scrapy startproject [dir]
genspider 创建一个爬虫 scrapy genspider [options]
crawl 运行一个爬虫 scrapy crawl
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执行
属性/方法 描述
.url Request对应的请求URL地址
.method 对应的请求方法,’ GET’ ‘POST’ 等
.headers 字典类型风格的请求头
.body 请求内容主题,字符串类型
.meta 用户添加的扩展信息,在Scrapy内部模块键传递信息使用
.copy() 复制该请求

Response类
class scrapy.http.Response()

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

Item类
class scrapy.item.Item()

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


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

你可能感兴趣的:(Python网络爬虫,python网络爬虫,scrapy)