scrapy:是一个遍历爬行网站 ,分析获取数据而设计的应用程序框架,原本设计用于屏幕抓取(网络抓取)也可以用来访问api来提取数据;广泛应用与数据挖掘、信息处理、历史片打包等等。
“5+2”结构
Engine:不需要用户修改
- 控制所有模块之间的数据流
- 根据条件触发事件
Downloader:不需要用户修改
- 根据请求下载网页
Scheduler:不需要用户修改
- 对所有爬取请求调度管理
Downloader Middleware:
目的: 实施Engine,Scheduler和Downloader之间进行用户可配置的控制。
功能: 修改、丢弃、新增请求响应
可以编写配置代码,一般用户不对requests或response进行修改,不需要编写配置代码
Spider:
- 解析Downloader返回的响应(response)
- 产生爬取项(scraped item)
- 产生额外的爬去请求(request)
需要用户编写配置代码
Item Pipelines
- 以流水线方式处理Spider产生的爬取项
- 由一组操作顺序组成,类似流水线,每一个操作是一个iten pipeline类型
- 可能操作包括:清理、检验和查重爬取项中的HTML,数据将数据储存到数据库。
需要用户编写配置文件
Spider Middleware:
目的: 对用户和爬取项的再处理
功能: 修改、丢弃、新增请求响应或爬取项
用户可编写配置代码
requests | scrapy |
---|---|
网页级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能较差 | 并发性好,性能较高 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手简单 | 入门稍难 |
爬去大量网页建议采用scrapy框架
小请求爬取,建议requests
周期性,对爬取结果进行积累建议scrapy框架
定制程度高,建议自行搭建框架,requests>scrapy
scrapy命令行
在cmd中输入scrapy -h查看scrapy命令行
命令 | 说明 | 格式 |
---|---|---|
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 ] |