scrapy是一个爬虫框架,爬虫框架是实现爬虫功能的一个软件结构和功能组件集合,是一个半成品,能够帮助用户实现专业网站爬虫。
功能模块分析
- Engine 整个框架的核心,控制所有模块之间的数据流根据条件触发事件 。
- Downloader -> 根据请求下载网页 。
- Scheduler ->对所有爬取请求进行调度管理。
(以上三个模块用户是不需要编写的,因为scrapy已经把他们实现的很好了。如果有必要修改,通过修改Downloader Middleware 模块来实现。) - Downloader Middleware ->实施上面三者之间进行用户可配置的控制,修改,丢弃,新增请求或响应。
- Spider
- 解析Downloader返回的响应(Response)
- 产生爬取项(scraped item)
- 产生额外的爬去请求(Request)
- Item Pipelines ->以流水线方式处理Spider产生的爬取项。可能操作包括:清理,检验,和查重爬取项中的HTML数据,将数据存储到数据库。
(上面的spider和item pipelines模块都是需要用户自己配置代码的) - Spider Middleware ->对请求和爬取项的再处理,修改,丢弃,新增请求或爬取项。
requests vs Scrapy
相同点:两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线。两者都没有处理js,提交表单,应对验证码等功能(可扩展)
不同点:requests:网页级爬虫,功能库。Scrapy:网站级爬虫,框架。
Scrapy爬虫的使用步骤:
- 创建一个工程和Spider模板
- 编写Spider
- 编写Item Pipeline
- 优化配置策略
Scrapy爬虫的数据类型:Request类,Response类,Item类
Request对象表示一个HTTP请求,由Spider生成,由Downloader执行。
Response对象表示一个HTTP响应,由Downloader生成,由Spider处理。
item对象表示一个从HTML页面中提取的信息内容,由spider生成,由item pipeline处理。
HTML信息提取的方法:
- Beautiful Soup
- Ixml
- re
- Xpath Selector
- CSS Selector