1.持久化存储
- 编码流程:
1.数据解析
2.封装item类
3.将解析的数据存储到实例化好的item对象
4.提交item
5.管道接收item而后对item进行io操做
6.开启管道
- 注意事项:
- 将同一份数据存储到不一样的平台中:
- 管道文件中一个管道类负责将item存储到某一个平台中
- 配置文件中设定管道类的优先级
- process_item方法中return item的操做将item传递给下一个即将被执行的管道类
2.全站数据爬取
- 手动请求的发送:
- 设定一个通用的url模板
- 手动i请求的操做写在哪里:parse方法
- yield scrapy.Request(url,callback)
3.五大核心组件前端
猛击它浏览器
4.post请求
- start_requests(self)
- post请求的手动发送:yield scrapy.FormRequest(url,callback,formdata)
- COOKIES_ENNABLE = False
5.日志等级和请求传参
- LOG_LEVEL = 'ERROR'
- LOG_FILE = 'path'
- 请求传参的应用场景:
- 爬取且解析的数据没有在同一张页面
- 在请求方法中使用meta(字典)参数,该字典会传递给回调函数
- 回调函数接收meta:response.meta['key']服务器
- 下载中间件:
- 做用:批量拦截请求和响应
- 拦截请求:
1.篡改请求头信息(User-Agent):
2.设置相关请求对象的代理ip(process_exception中)
- selenium如何做用在scrapy中:
- 实例化一个浏览器对象(一次):spider的构造方法中cookie
- 在scrapy中如何给全部的请求对象尽量多的设置不同的请求载体身份标识
- UA池,process_request(request)
- 在scrapy中如何给发生异常的请求设置代理ip
- ip池,process_exception(request,response,spider):request.meta['proxy'] = 'http://ip:port'
- 将异常的请求拦截到以后,经过代理ip相关的操做,就能够将改异常的请求变成非异常的请求,而后必须从新
对该请求进行从新的请求发送:return request
- 简述下载中间件的做用及其最重要三个方法的做用
- process_request:拦截全部非异常的请求
- process_response:拦截全部的响应对象
- process_exception:拦截发生异常的请求对象,须要对异常的请求对象进行相关处理,让其变成
正常的请求对象,而后经过return request 对该请求进行从新发送
- 简述scrapy中何时须要使用selenium及其scrapy应用selenium的编码流程
- 实例化浏览器对象(一次):spider的init方法
- 须要编写浏览器自动化的操做(中间件的process_response)
- 关闭浏览器(spider的closed方法中进行关闭操做)并发
- 图片懒加载scrapy
这是一种前端技术,缓解服务器压力,给用户更好的体验,他只对屏幕内的图片进行加载,其余的图片使用伪属性隐藏起来,当检测到屏幕要显示时,改变为原生属性,因此能够经过伪属性名获取图片地址。ide
- 如何提高scrapy爬取数据的效率:函数
默认scrapy开启的并发线程为32个,能够适当进行增长。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。post
下降日志级别:
在运行scrapy时,会有大量日志信息的输出,为了减小CPU的使用率。能够设置log输出信息为INFO或者ERROR便可。在配置文件中编写:LOG_LEVEL = ‘INFO’网站
禁止cookie:
若是不是真的须要cookie,则在scrapy爬取数据时能够禁止cookie从而减小CPU的使用率,提高爬取效率。在配置文件中编写:COOKIES_ENABLED = False
禁止重试:
对失败的HTTP进行从新请求(重试)会减慢爬取速度,所以能够禁止重试。在配置文件中编写:RETRY_ENABLED = False
减小下载超时:
若是对一个很是慢的连接进行爬取,减小下载超时能够能让卡住的连接快速被放弃,从而提高效率。在配置文件中进行编写:DOWNLOAD_TIMEOUT = 10 超时时间为10s
- crawlSpider
crawlSpider全站数据爬取
- crawlSpider就是spider一个子类(派生)
- crawlSpider具备的机制:
- 链接提取器
- 规则解析器
- 建立爬虫文件: scrapy genspider -t crawl spiderName www.xxx.com
--此指令对比之前的指令多了 "-t crawl",表示建立的爬虫文件是基于CrawlSpider这个类的,而再也不是Spider这个基类。
- 深度爬取:
增量式爬虫:
- 概念:用来《检测》网站数据更新的状况。只会爬取网站中更新出来的新数据。 - 核心:去重