版权声明: https://blog.csdn.net/Wang_Jiankun/article/details/83785948
Python 网络爬虫笔记9 – Scrapy爬虫框架
Python 网络爬虫系列笔记是笔者在学习嵩天老师的《Python网络爬虫与信息提取》课程及笔者实践网络爬虫的笔记。
课程链接:Python网络爬虫与信息提取
参考文档:
Requests 官方文档(英文)
Requests 官方文档(中文)
Beautiful Soup 官方文档
re 官方文档
Scrapy 官方文档(英文)
Scrapy 官方文档(中文)
一、安装与简介
1、安装
# 安装
pip install scrapy
# 测试
scrapy ‐h
2、简介
- Scrapy是一个快速、功能强大的网络爬虫框架
- Scrapy不是一个函数功能库,而是一个爬虫框架。爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合。爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
二、Scrapy 框架
1、Scrapy 框架图
2、Scrapy 框架结构(5+2)
Engine: 不需要用户修改
- 控制所有模块之间的数据流,不间断从Scheduler处获得爬取请求,直至请求为空
- 根据条件触发事件
Downloader: 不需要用户修改
- 根据请求下载网页
Scheduler: 不需要用户修改
- 对所有爬取请求进行调度管理
Downloader Middleware: 用户可以编写配置代码
- 目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制
- 功能:修改、丢弃、新增请求或响应
Spider: 需要用户编写配置代码
- 解析Downloader返回的响应(Response)
- 产生爬取项(scraped item)
- 产生额外的爬取请求(Request)
Item Pipelines: 需要用户编写配置代码
- 以流水线方式处理Spider产生的爬取项
- 由一组操作顺序组成,类似流水线,每个操作是一个 Item Pipeline 类型
- 可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
Spider Middleware: 用户可以编写配置代码
- 目的:对请求和爬取项的再处理
- 功能:修改、丢弃、新增请求或爬取项
3、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
三、Scrapy 命令
1、使用方式
- Scrapy是给程序员用的专业爬虫框架,提供Scrapy命令行操作方式
- 使用windows时,直接打开cmd输入命令即可
# Scrapy命令行格式
scrapy <command> [options] [args]
2、常用命令
命令 | 说明 | 格式 |
---|---|---|
startproject | 创建一个新工程 | scrapy startproject < name> [dir] |
genspider | 创建一个爬虫 | scrapy genspider [options] < name> < domain> |
settings | 获得爬虫配置信息 | scrapy settings [options] |
crawl | 运行一个爬虫 | scrapy crawl < spider> |
list | 列出工程中所有爬虫 | scrapy list |
shell | 启动URL调试命令行 | scrapy shell [url] |