爬虫---scrapy全站爬取
全站爬取1
基于管道的持久化存储
数据解析(爬虫类)
将解析的数据封装到item类型的对象中(爬虫类)
将item提交给管道, yield item(爬虫类)
在管道类的process_item中接手收item对象, 并进行任意形式的持久化存储操作(管道类)
在配置文件中开启管道
细节:
将爬取到的数据进行备份:一个管道类对应一种平台的持久化存储
有多个管道类是否意味着多个管道类都可以接收到爬虫文件提交的item?
只有优先级最高的管道才会接收到item,其余的管道是从优先级最高的管道类中接收item
基于Spider父类进行全站数据的爬取
- 全站数据的爬取:将所有页码对应的页面数据进行爬取
- 手动发送请求 (get):
yield scrapy.Request(url, callback) - 对yield的总结:
- 向管道提交item时,
yield item - 手动发送请求:
yield scrapy.Request(url, callback)
- 向管道提交item时,
- 手动发送请求 (post):
yield scrapy.Request(url, formdata, callback)
scrapy请求传参
作用: 实现深度爬取
使用场景: 使用scrapy爬取的数据没有存在于同一个页面中,
传递item:
yield Request(url, callback, meta={'item':item})接收item:
response.meta['item']
提升scrapy爬取数据的效率
在配置文件中进行相关配置即可.
- 增加并发: 默认scrapy开启的并发线程为32个, 可以适当进行增加. 在settings配置文件中修改CONCURRENT_REQUESTS=100
- 降低日志级别: 在运行scrapy时, 会有大量日志信息的输出, 为了减少CPU的使用率, 可以设置log输出信息为INFO或ERROR即可, 在配置文件中写入 LOG_LEVEL='INFO'
- 禁止cookie: 如果不是真的需要cookie, 则在scrapy爬取数据时可以禁止cookie, 从而减少CPU的使用率, 提升爬取效率. 在配置文件中设置COOKIES_ENABLED=False
- 禁止重试: 对失败的HTTP进行重新请求会减慢爬取速度, 因此可以禁止重试. 在配置文件中设置RETRY_ENABLED=False
- 减少下载超时: 如果对一个非常慢的链接进行爬取, 减少下载超时可以能让卡住的链接被快速放弃, 提升效率. 在配置文件中设置DOWNLOAD_TIMEOUT=10, 设置超时时间为10秒.
scrapy的中间件
爬虫中间件
下载中间件(重点): 处于引擎和下载器之间
- 作用: 批量拦截所有的请求和响应
- 拦截请求, 可以篡改请求的头信息, 进行UA伪装; 或者篡改请求对应的IP代理
- 拦截响应, 可以篡改响应数据, 或者篡改响应对象
selenium在scrapy中的使用流程
- 在爬虫类中定义一个browser属性, 其实就是实例化的浏览器对象
- 在爬虫类重写父类的closed(self, spider)方法, 并在该方法中关闭browser
- 在中间件中进行浏览器自动化操作
图片懒加载
- 应用到标签的伪属性, 数据捕获的时候要基于伪属性进行.
- 专门用于二进制数据下载和持久化存储的管道类: ImagePipeline
全站爬取2
CrawlSpider
- 一种基于scrapy进行全站数据爬取的一种新的技术手段
- CrawlSpider是Spider的一个子类
- 连接提取器: LinkExtractor
- 规则解析器: Rule
- 使用流程:
- 新建工程
- cd 工程中, 新建一个爬虫文件
scrapy genspider -t crawl spider_name www.xxx.com - 编写爬虫程序
爬虫---scrapy全站爬取的更多相关文章
- scrapy全站爬取拉勾网及CrawSpider介绍
一.指定模板创建爬虫文件 命令 创建成功后的模板,把http改为https 二.CrawSpider源码介绍 1.官网介绍: 这是用于抓取常规网站的最常用的蜘蛛,因为它通过定义一组规则为跟踪链接提供了 ...
- python爬虫scrapy框架——爬取伯乐在线网站文章
一.前言 1. scrapy依赖包: 二.创建工程 1. 创建scrapy工程: scrapy staratproject ArticleSpider 2. 开始(创建)新的爬虫: cd Artic ...
- 爬虫 Scrapy框架 爬取图虫图片并下载
items.py,根据需求确定自己的数据要求 # -*- coding: utf-8 -*- # Define here the models for your scraped items # # S ...
- scrapy架构与目录介绍、scrapy解析数据、配置相关、全站爬取cnblogs数据、存储数据、爬虫中间件、加代理、加header、集成selenium
今日内容概要 scrapy架构和目录介绍 scrapy解析数据 setting中相关配置 全站爬取cnblgos文章 存储数据 爬虫中间件和下载中间件 加代理,加header,集成selenium 内 ...
- Scrapy+selenium爬取简书全站
Scrapy+selenium爬取简书全站 环境 Ubuntu 18.04 Python 3.8 Scrapy 2.1 爬取内容 文字标题 作者 作者头像 发布日期 内容 文章连接 文章ID 思路 分 ...
- 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式
爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...
- scrapy使用爬取多个页面
scrapy是个好玩的爬虫框架,基本用法就是:输入起始的一堆url,让爬虫去get这些网页,然后parse页面,获取自己喜欢的东西.. 用上去有django的感觉,有settings,有field.还 ...
- scrapy_全站爬取
如何查询scrapy有哪些模版? scrapy genspider –list 如何创建crawl模版? scrapy genspider -t crawl 域名 scrapy genspider - ...
- scrapy增量爬取
开始接触爬虫的时候还是初学Python的那会,用的还是request.bs4.pandas,再后面接触scrapy做个一两个爬虫,觉得还是框架好,可惜都没有记录都忘记了,现在做推荐系统需要爬取一定的 ...
随机推荐
- thinkpad笔记本选型
ThinkPad分为了几大系列,低端的有L系列.E系列,比较高端的有T系列.X系列及P系列,这些系列中质量比较稳定属于商务办公系列,中端有针对商务或者是娱乐的R系列.A系列和S系列.具体介绍如下: 1 ...
- 服务器安装centos8提示显示器不支持输出的分辨率
今天机房老服务器安装CENTOS8时启到到引导界面,显示器就提输出分辩率为1920*1080 60MHZ ,这怎么能支持.本想装了显卡来装,拆机一看我去不支持. 后来在网上一查才知道有解决方案. 可以 ...
- Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格
Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...
- LGP3426题解
真是不管什么时候来做这道题都会觉得很神仙呐... 观察一下,如果存在一个合法的印章,那么这个印章一定是这个串的前缀,也是这个串的后缀. 即合法的印章一定是原串的 \(\rm Border\). 于是设 ...
- Mybatis使用注解开发(未完)
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心 注解在接口实现 @Select("SELECT * FROM user") Lis ...
- 钓鱼+DNS欺骗学习笔记
钓鱼+DNS欺骗学习笔记 0x00 写在前面 原文链接: http://www.cnblogs.com/hkleak/p/5186523.html 感谢大佬无私教学 0x01 步骤如下 第一步:布置钓 ...
- 记-Windows环境下Prometheus+alertmanager+windows_exporter+mtail监控部署
1.概述 最近因项目需要统计服务的负载情况及机器的负载情况,但是项目里面却没有相关统计而服务所在的机器也没有相关的监控,因为工期原因就选择了相对轻量级的prometheus方案.其中windows_e ...
- Linux 性能调优都有哪几种方法?
1.Disabling daemons (关闭 daemons). 2.Shutting down the GUI (关闭 GUI). 3.Changing kernel paramete ...
- 用 wait-notify 写一段代码来解决生产者-消费者问题?(答案)
请参考答案中的示例代码.只要记住在同步块中调用 wait() 和 notify()方法,如果阻塞,通过循环来测试等待条件.
- Java 中用到的线程调度算法是什么?
抢占式.一个线程用完 CPU 之后,操作系统会根据线程优先级.线程饥饿情况等 数据算出一个总的优先级并分配下一个时间片给某个线程执行.