安装部分
命令行执行:
安装: pip install scrapy
安装后小测: 执行scrapy -h
Scrapy爬虫框架结构:
爬虫框架:爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合。
Scrapy:5+2结构
5个模块
Spiders 用户编写(配置) 解析Downloader返回的响应,产生爬取项,产生额外的爬取请求。
Item pipelines 用户编写(配置) 以流水线来处理Spider产生的爬取项,可能的操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。
Engine 已有实现 控制数据流,触发事件,不需要用户修改
Downloader 已有实现 根据请求来下载网页,不需要用户修改
Scheduler 已有实现 对所有请求进行调度,不需要用户修改
2个中间件
Downloader Middleware: 实施Engine、Scheduler和Downloader之间进行用户可配置的控制。修改、丢弃、新增请求或响应。用户可以编写配置代码,也可以不更改。
Spider Middleware:目的:对请求和爬取项的再处理。功能:修改、丢弃、新增请求或爬取项。用户可以编写配置代码。
Requests vs. Scrapy
相同点:
两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线。
两者可用性都好,文档丰富,入门简单。
两者都没有处理js、提交表单、应对验证码等功能(可扩展)。
不同点:
非常小的需求,requests
不太小的请求,Scrapy
定制程度很高的需求(不考虑规模),自搭框架,requests>Scrapy。
Scrapy命令行
scrapy -h
Scrapy命令行格式:
scrapy <commad> [options][args]
Scrapy常用命令:
Scrapy爬虫的第一个实例
1. 新建项目:
生成工程目录
2. 在工程中产生一个Scrapy爬虫
3. 配置产生的spider爬虫
4. 运行爬虫,获取网页
scrapy crawl demo
yield关键字
与生成器息息相关,生成器是一个不断产生值的函数。
包含yield语句的函数是一个生成器。
生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值。