1 scapy介绍
scrapy是一个基于twisted(python)的开源的爬虫框架,注意它是一个框架,不同于requests和urllib,这两个是库,很多功能都需要自己去实现
scrapy优点
耦合度低,可扩展性强
可以快速灵活定制需求,例如实现log,参数配置,监控,数据处理
针对爬虫中遇到的各类问题(反爬虫策略,数据解析,数据持久化等),只需完成指定模块的开发就可以实现功能
异步实现,并发量大,适用于大规模爬取数据
上图是scrapy的框架,包括以下几个部分
engine:负责处理整个系统的数据流,出发事务
spider:负责发起requests,解析response的数据内容为item,并将解析后的item返回给引擎
item pipelines:负责处理items,包括过滤,分析,存储等,常见的应用就是将数据存入数据库
downloader:负责根据request内容下载数据并返回response
middleware:处理request和response的中间件,常见应用包括设置数据请求头,代理和代理IP等
scheduler:负责接受引擎发送来的请求,并将其加入队列中。
2 scrapy安装
pip install scrapy
3 scrapy项目启动
#创建一个scrapy项目:scrapy startpoject 项目名称
scrapy startproject baidu
#进入项目目录,不然下一步生成的spider将不再spider目录
cd baidu
#创建一个spider:scrapy genspider 爬虫名称 目标网址
scrapy genspider baidutest baidu.com
注:创建的spider名称不能是数字开头,如果是数字开头将会自动在自定义名称前加a
执行完成后系统将出现如下目录结构
4 scrapy实现
spider实现request请求和解析reponse
如果希望循环爬取多个网页的数据可以在def start_requests方法定义需要爬取的网址url
def start_requests(self):
url = "https://movie.douban.com/top250?p={0}"
for i in range(1, 5):
yield scrapy.<