导图社区 Python Scrapy爬虫框架
本导图总结了Python的scrapy爬虫框架,包括框架的基本结构、如何使用等。
编辑于2020-08-18 19:48:47Python Scrapy爬虫框架
组成部分
五个模块
ENGINE模块(已有实现)
控制所有模块之间的数据流
根据条件触发事件
DOWNLOADER模块(已有实现)
根据请求下载网页
SCHEDULER模块(已有实现)
对所有爬取请求进行调度管理
SPIDERS模块(用户编写)
解析Downloader返回的响应(Response)
产生爬取项(scraped item)
产生额外的爬取请求(Request)
ITEM PIPELINES模块(用户编写)
以流水线方式处理Spider产生的爬取项
由一组操作顺序组成,类似流水线,每个操作时一个Item Pipeline类型
可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
两个中间件
Downloader Middleware
目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制
功能:修改、丢弃、新增请求或响应
Spider Middleware
目的:对请求和爬取项的再处理
功能:修改、丢弃、新增请求或爬取项
Scrapy命令行
启动
在CMD中执行:scrapy -h
格式
>scrapy <command>[options][args]
常用命令
startproject命令
格式:scrapy startproject <name> [dir]
创建一个新工程
genspider命令
格式:scrapy genspider [options]<name><domain>
创建一个爬虫
settings命令
格式:scrapy settings [options]
获得爬虫配置信息
crawl命令
格式:scrapy crawl <spider>
运行一个爬虫
list命令
格式:scrapy list
列出工程中所有爬虫
shell命令
格式:scrapy shell [url]
启动URL调试命令行
主要类
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
Response对应的URL地址
.status
HTTP状态码,默认是200
.headers
Response对应的头部信息
.body
Response对应的内容信息,字符串类型
.flags
一组标记
.request
产生Response类型对应的Request对象
.copy
复制该响应
Item类
class scrapy.item.Item()
Item对象表示一个从HTML页面中提取的信息内容 由Spider生成,由Item Pipeline处理 类似字典类型,可以按照字典类型操作
使用步骤
1.创建一个工程和Spider模板
2.编写Spider
3.编写Item Pipeline
4.优化配置策略