Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。**
pip install scrapy 2.3.0 (在Window10环境下,可能会出现 gzip解码错误)
pip install scrapy 2.1.0 (建议安装版本)
如果安装有错误!!!!
pip install Scrapy
building ‘twisted.test.raiser’ extension
error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
解决方案:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下载twisted对应版本的whl文件(如我的Twisted-17.5.0-cp36-cp36m-win_amd64.whl),cp后面是python版本,amd64代表64位,运行命令:
pip install C:\Users…\Twisted-17.5.0-cp36-cp36m-win_amd64.whl
pip install Scrapy
启动爬虫的入口(发起起始的请求)/请求成功之后的数据解析/解析过程的产出item和request
scrapy.Spider 普通的爬虫类的父类
scrapy.CrawlSpider 可设置规则的爬虫类、Rule规则类
开始函数 start_requests()
接收engine传入的请求,根据调度规则(考虑优先级), 产出一个request给engine.
有自己的调度规则,无需关注
从引擎处获取到请求对象后,请求数据
接收engien从调度器获取的请求request, 并开始下载,下载成功之后,产出给engine
处理engien从爬虫类中接收到解析数据item, 并进行处理.
清理HTML数据
验证爬取的数据
查重并将重复的数据丢弃
将爬取结果保存到数据库中
对图片数据进行下载
- scrapy startproject 项目名 --->创建项目
- scrapy genspider 爬虫名 域名 ---> 创建爬虫
- scrapy genspider -t crawl 爬虫名 域名 ---> 创建规则爬虫
- scrapy crawl 爬虫名 -o 文件名 ---> 导出文件
- scrapy crawl 爬虫名 ---> 启动爬虫
- scrapy shell [url] ---> 终端执行
response 是 scrapy.http.HtmlResponse类对象
方法
- css() ---> 通过HTML中css属性对数据解析
- xpath() ---> 返回Selector对象,通过HTML标签路径对数据解析
- json()
- copy()
用于获取Selector对象的内容
- extract() ---> 返回list
- extract_first() ---> 提前第一条内容
属性
- encoding ---> 字符集,不能直接修改
- url ---> 响应路径
- headers ---> 响应头
- body ---> 字节数据
- status ---> 响应
- text ---> 文本消息
- meta ---> 接收到Request()中的meta属性向解析函数传递数据(元数据)
- request ---> 响应请求
- url ---> 请求路径
- method ---> 请求方法
- headers ---> 请求头
- cookies ---> 缓存
- body ---> 请求体
- meta ---> meta属性可以向下一个解析函数传递数据(元数据),是dict字典格式,value不能是一个引用对象
- dont_filter ---> dont_filter为False表示过滤重复下载的请求,为True则不过滤
- priority ---> 优先级
- callback ---> 回调函数
- encoding ---> 编码格式