是一个爬虫框架,是实现的爬虫功能的一个软件结构与功能组件集合。包括7个部分(5+2)组合
在命令行输入:
pipinstall scrapy
查看安装结果:
scrapy -h
scrapy <command> [options] [args]
基本语法:scrapy startproject <name>
scrapy startproect python123
创建一个demo.py文件
scrapy genspider demo python123.io
爬取网页并存储
# -*- coding: utf-8 -*-import scrapyclassDemoSpider(scrapy.Spider):name ='demo'#allowed_domains = ['python123.io']defstart_requests(self): urls = ['http://python123.io/ws/demo.html']forurlinurls:yieldscrapy.Request(url=url,callback=self.parse)defparse(self, response): fname = response.url.split('/')[-1] with open(fname,'wb') asf:f.write(response.body)self.log('Saved file %s.'% fname)
语法:scrapy crawl <spider>
scrapy crawl demo
报错: import win32api ModuleNotFoundError: No module named 'win32api'
pipinstallpypiwin32
命令说明格式
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]
属性与方法说明
.urlrequest对应请求URL地址
.method对应请求方法,‘GET,POST’等
.header字典类型请求头
.body请求内容主体,字符串类型
.meta用户添加的扩展信息,在scrapy模块传递
属性与方法说明
.urlresponse对应请求URL地址
.statushttp状态码,默认是200
.headerresponse对应的头部信息
.body响应内容主体,字符串类型
.flags一组标记
.request产生Response类型对应的request对象
.copy()复制该响应
1、Engine从Spider处获得爬取请求(Request)
2、Engine将爬取请求转发给Scheduler,用于调度
3、Engine从Scheduler处获得下一个要爬取的请求
4、Engine将爬取请求通过中间件发送给Downloader
5、爬取网页后,Downloader形成响应(Response) 通过中间件发给Engine
6、Engine将收到的响应通过中间件发送给Spider处理
7、Spider处理响应后产生爬取项(scraped Item) 和新的爬取请求(Requests)给Engine
8、Engine将爬取项发送给Item Pipeline(框架出口)
9、Engine将爬取请求发送给Scheduler
Engine控制各模块数据流,不间断从Scheduler处获得爬取请求,直至请求为空
框架入口:Spider的初始爬取请求框架
出口:Item Pipeline
