爬虫工作量由小到大的思维转变---<第二十二章 Scrapy开始很快,越来越慢(诊断篇)>

前言:

相信很多朋友在scrapy跑起来看到速度200+/min开心的不得了;可是,越跑到后面,发现速度变成了10-/min;刚开始以为是ip代理的问题,结果根本不得法门...

新手跑3000 ~ 5000左右数据,我相信大多数人没有问题,也不会发现问题;

可一旦数据量上了10W+,你是不是就能明显感觉到速度逐渐下降了!!

于是,你以为是要开始分布式! 分出来之后,果真发现,好使!!速度上去了----但如果你这时候跑100/1000w+的数据,你一样还是要出问题! 因为,你的scrapy设计在单个spiders的时候,就出问题了!但问题出在哪?

我准备用3章来解决这个'scrapy速度越来越慢'的问题!

(目前来看,好像只有我在做这事了;会不会侵害到XX,请私联我.我就删文)

正文:

首先,我们需要诊断问题的关键是用一个检测工具;也是scrapy手册里讲的`telnet`:

telnet用途:

  1. 查看爬虫状态:你可以使用Telnet命令来查看正在运行的爬虫的状态,包括已爬取的页面数、请求队列中的请求数、已抓取的数据等统计信息。
  2. 动态修改配置:通过Telnet,你可以修改Scrapy的配置选项,例如下载延迟、请求头、请求过滤规则等,而无需停止和重新启动整个Scrapy进程。
  3. 控制爬虫行为:你可以通过Telnet命令暂停、恢复或终止正在运行的爬虫。这对于调试和管理爬虫的行为非常有用。
  4. 执行扩展命令:Scrapy提供了一些内置的扩展命令,可以通过Telnet进行调用,例如导出爬取的数据、监视爬虫性能等。

windows如何使用?

相信你看到网上的教程用的时候,会遇上这种问题;这是因为,你没有开启telnet;

如何开启telnet:


在控制面板里面,找到这个客户端,勾上-->确认!就是开启!

随后,cmd-->输入:telnet 

欢迎使用 Microsoft Telnet ClientEscape 字符为 'CTRL+]'Microsoft Telnet>

出现这种,就是成功了(表示开启了telnet)

如何连接scrapy,进行监控呢?

1.设置爬虫setting里面:

我不推荐None,因为我发现设置None的时候,他还是需要密码;且经常卡bug-->于是,我自己在监控的时候,会设置一个简单的账号/密码,如图:

2.运行你的爬虫;让他开始工作...

如果你没有设置账号密码,他会在日志的info里,有这么一段:

这是是scrapy生成的随机密码;(所以,我推荐你自己定一个密码好些,后面没那么多事!)

3.开启telnet,查看scrapy运行状况

cmd--->输入:

telnet localhost 6023

然后,对应输入你的账号/密码 (输入密码的时候,没反应;直接输完,回车就行了!)

4.telnet命令:

  1. help:显示可用的Telnet命令列表,以及每个命令的简要说明。
  2. shell:打开Scrapy shell,允许你在交互式Python环境中执行Scrapy的操作和命令。
  3. stop:停止当前正在运行的爬虫。
  4. start:启动之前已经停止的爬虫。
  5. pause:暂停当前正在运行的爬虫。
  6. resume:恢复之前暂停的爬虫。
  7. list:列出当前正在运行的爬虫和已完成的爬虫的状态。
  8. status:显示当前正在运行的爬虫的状态信息,包括请求和响应的统计数据。
  9. spiders:显示已定义的爬虫列表。
  10. stats:显示当前Scrapy进程的全局统计信息,例如已处理的请求数、失败数等。
  11. log [level]:设置和显示当前日志记录的级别。可选的level参数包括DEBUG、INFO、WARNING、ERROR和CRITICAL。
  12. close_spider [spider_name]:关闭指定名称的爬虫。

例如(想启动一个已经定义的爬虫)

start spider_name

5.诊断:

我们的关键是找到为什么scrapy会越来越慢...

于是,我们可以输入:

prefs()--->看图说话:

我们可以看到表上,当我的爬虫已经运行一段时间后:

缓存中累计有1178条item,最老的一条是在368秒前

request请求,有5840调,最老的也是在368秒前

.....

他表示:我的scrapy里面,问题最大的是在request,他已经堆积了很多没有处理完的任务;当调度器从一开始在100条数据里进行调度,再慢慢增加到5840条数据,你说他的速度是不是就慢了?

------这也就是为什么我们的scrapy会越来越慢,归根结底是内存泄漏--->通俗点:内存没好好管理,释放;导致6分钟以前的请求还卡在调度器里,一直没发起请求; 导致管理这个scrapy的内存慢了,于是处理起来速度就慢了!

总结:

分享的这个案例,并不是说所有的scrapy都是request的请求满的问题;但是,可以通过telnet的监控工具,来检查一下,自己的scrapy是否健康;哪一块会有问题?  就跟去医院拍X光照一样,对症诊断...你只有保证每一只爬虫都是健康的情况下,再去突破瓶颈开发分布式,才是王道; 否则,你的爬虫看起来能跑,但生命力不强,就是这个原因!!!

-------这一章讲完了"诊断",下一章教"医病"!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296106.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB - 四元数(quaternion)

系列文章目录 前言 一、简介 四元数是一种四元超复数,用于三维旋转和定向。 四元数的表示形式为 abicjdk,其中 a、b、c 和 d 为实数,i、j 和 k 为基元,满足等式:i2 j2 k2 ijk -1。 四元数集用 H 表示&#xff0c…

BigQuery Clustered Table 简介 - 聚簇表

Clustered Table的定义 聚簇可以提高某些类型的查询(例如,使用过滤条件子句的查询和聚合数据的查询)的性能。当通过查询作业或加载作业将数据写入聚簇表时,BigQuery 会使用聚簇列中的值对这些数据进行排序。这些值用于将数据整理…

使用 KVM 管理程序优化虚拟化

KVM(基于内核的虚拟机)是一项强大的开源虚拟化技术,内置于Linux 内核。它支持在单个物理主机上运行多个虚拟机 (VM),这对于资源效率、服务器整合以及为不同目的创建隔离环境特别有帮助。 本文将深入介绍 KVM 管理程序&#xff0…

1863_电荷泵的基本原理

Grey 全部学习内容汇总: GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1863_电荷泵的基本原理 一直…

【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

C++反向迭代器

反向迭代器在实现上其实是复用了正向迭代器的代码,即利用正向迭代器进行适配,能适配的原因:有很多功能都是重合的,如 *,->,,--等,正反迭代器唯一的区别就是方向相反。 如图 那么…

小程序本地文件读、写、追加数据操作,以及修改文件内容

小程序系统文件管理器 FileSystemManager 要操作/读取本地文件,首先需要创建文件或文件夹,然后再对文件进行读写操作; 首先创建文件 FileSystemManager.writeFile 可直接创建文件并写入内容 定义文件路径,此路径在读写操作时保…

ubuntu 22.04 安装mysql服务

完整内容: https://developer.aliyun.com/article/1260321 # 安装服务 sudo apt install mysql-server# 按向导设置root密码 sudo mysql_secure_installation# 使用设置的密码登录 sudo mysql -u root -p也可以使用工具登录,例如: navicat for mysql

word2003 open word2007+

Win 7 C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates 还是不行,重装office2003吧,再安装转换插件,但是再高版本好像没转换工具

Hadoop入门学习笔记——六、连接到Hive

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 六、连接到Hive6.1. 使用Hive的Shell客户端6.2. 使用Beel…

Python----静态Web服务器-返回指定页面数据

1. 静态Web服务器的问题 目前的Web服务器,不管用户访问什么页面,返回的都是固定页面的数据,接下来需要根据用户的请求返回指定页面的数据 返回指定页面数据的实现步骤: 获取用户请求资源的路径根据请求资源的路径,读取指定文件…

HarmonyOS构建第一个ArkTS应用(FA模型)

构建第一个ArkTS应用(FA模型) 创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。 选择Application应用开发&a…