特点:爬取效率⾼高、扩展性强、Python编写跨平台运⾏行行
数据流程
Scrapy中的数据流由执⾏行行引擎控制,其过程如下:
1、引擎打开⼀一个⽹网站(open a domain),找到处理理该⽹网站的Spider并向该spider请求第⼀一个要
爬取的URL(s)。
2、引擎从Spider中获取到第⼀一个要爬取的URL并在调度器器(Scheduler)以Request调度。
3、引擎向调度器器请求下⼀一个要爬取的URL。
4、调度器器返回下⼀一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)⽅方向)转
发给下载器器(Downloader)。
5、⼀一旦⻚页⾯面下载完毕,下载器器⽣生成⼀一个该⻚页⾯面的Response,并将其通过下载中间件(返回
(response)⽅方向)发送给引擎。
6、引擎从下载器器中接收到Response并通过Spider中间件(输⼊入⽅方向)发送给Spider处理理。
7、Spider处理理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
8、引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度
器器。
9、(从第⼆二步)重复直到调度器器中没有更更多地request,引擎关闭该⽹网站。
安装Scrapy
windows whl
https://www.lfd.uci.edu/~gohlke/pythonlibs/
pip install scrapy -i https://pypi.douban.com/simple
windows 安装
1.scrapy依赖twiste,进⼊入 http://www.lfd.uci.edu/~gohlke/pythonlibs/ ,找到适合的版本,
下载Twisted-18.9.0-cp37-cp37m-win_amd64.whl
2.在下载存放的⽬目录下安装
pip install Twisted-18.9.0-cp37-cp37m-win_amd64.whl
如遇到需要下载 pywin32,请下载安装
Python for Windows Extensions - Browse /pywin32/Build 221 at SourceForge.net
- pip install pypiwin32
- pip install scrapy
创建项⽬目
scrapy startproject myscrapy
防⽌止被爬⽹网站的robots.txt起作⽤用
settings.py
修改 ROBOTSTXT_OBEY = False
创建Spider
scrapy genspider football sports.sina.com.cn
`
Spider 属性
name: Spider名字
allowed_domains: 允许爬取的域名
start_urls: Spider启动时爬取的url列列表
parse: 负责解析返回的响应,提取数据或进⼀一步处理理
创建Item
Item是保存爬取数据的容器器
解析Response
使⽤用Item
后续Request
运⾏行行
scrapy crawl football
保存到⽂文件 (csv, xml, pickle, marshal)
scrapy crawl football -o football.json
FEED_EXPORT_ENCODING = 'utf-8'