爬虫工作量由小到大的思维转变---<第六章 Scrapy想做事先做人>

news/2024/7/19 8:39:53 标签: 爬虫, scrapy

前言:

有新留言,说:"scrapy的业务逻辑什么的都没有问题,可是一旦开启,就被封!"
我的建议:1.没有动用ip池之前,调好配置,完善代码;
                2.有了ip池之后,调高配置,开始爬取;

-------------也就是,在开始项目前,你要表现得像个"人"!!! 

正文:

首先,你就记两个参数(在settings里):
# 配置下载延迟
DOWNLOAD_DELAY = 1

# 配置并发请求的最大数
CONCURRENT_REQUESTS = 16
在Scrapy中,DOWNLOAD_DELAY和CONCURRENT_REQUESTS两个设置是用于控制爬虫行为的重要参数。


DOWNLOAD_DELAY:

这个设置用于指定连续请求之间的下载延迟时间,值以秒为单位。
例如,DOWNLOAD_DELAY = 1意味着Scrapy在执行两个请求之间至少等待1秒。
这有助于减缓爬取速度,避免因为向网站发送过多请求而过快地爬取,从而避免给网站服务器带来负担,或者因为爬取过快而被网站反爬机制封锁。
CONCURRENT_REQUESTS:

这个设置用于控制Scrapy爬虫的最大并发请求数。
默认情况下,Scrapy为16,也就是说,Scrapy可以同时有最多16个请求在进行。
调整这个数字可以控制爬虫的并发水平。增加并发数可能会加速爬取速度,但也增加了服务器的负载和被封锁的风险;减少并发数会减轻对服务器的压力,但爬取速度会慢一些。

合理地使用这两个设置可以帮助你更好地管理爬虫的爬取行为和效率,同时避免不必要的问题(如遭到网站封锁)。

或者,你在你的爬虫文件里面:

class JihaishujuSpider(scrapy.Spider):
    name = 'jjjj'
    allowed_domains = ['XXX.com']
    #这里也可以控制并发量
    custom_settings = {
        'DOWNLOAD_DELAY': 3,
        # 如果您还想进一步限制并发数量,可以设置以下的属性
        'CONCURRENT_REQUESTS_PER_DOMAIN': 1,
        'CONCURRENT_REQUESTS_PER_IP': 1,
    }

custom_settings属性在Scrapy中用于给特定的爬虫指定设置,覆盖项目全局的settings.py文件中的相同设置。这里列出的设置如下:

  • DOWNLOAD_DELAY: 这是在两次连续请求之间的等待时间,用于限制爬虫的爬取速度,以秒为单位。 
    •         -DOWNLOAD_DELAY = 3意味着爬虫在执行一个下载请求后,会等待3秒后再执行下一个请求。
  • CONCURRENT_REQUESTS_PER_DOMAIN: 用于控制Scrapy对于任何单一域名的最大并发请求数。
    •         CONCURRENT_REQUESTS_PER_DOMAIN = 1意味着同一时间,Scrapy对于同一个域名只会执行一个请求。
  • CONCURRENT_REQUESTS_PER_IP: 用于限制Scrapy对同一个IP,无论域名如何,的最大并发请求数。
    •         CONCURRENT_REQUESTS_PER_IP = 1意味着Scrapy会对每个IP地址同时只进行一个请求。

小总结:

  1. DOWNLOAD_DELAY设置可以避免请求过于频繁,使得爬虫行为看起来更像是人类用户。这在对方网站明确禁止过快自动化爬取或有频繁请求限制时非常有用。
  2. 此外,当你设置CONCURRENT_REQUESTS_PER_DOMAIN和CONCURRENT_REQUESTS_PER_IP为1时,Scrapy相当于以串行方式访问每个域和IP,这极大地减少了对服务器造成的负载以及由于发送大量并发请求而引起的潜在问题。

http://www.niftyadmin.cn/n/5263850.html

相关文章

单调栈练习(一)— 子数组区间内最小值问题

题目 给定一个只包含正数的数组arr,arr中任何一个子数组sub, 一定都可以算出(sub累加和 ) * (sub中的最小值)是什么, 那么所有子数组中,这个值最大是多少? 前置知识-单调栈结构 暴力解 这道题暴力解的思路是&#xff…

PD快充MOS的选型分析与工作原理

工作原理: 充电时先将220V交流电通过整流电路变成高压直流电,然 后再通过开关管变成高频高压脉冲,之后再通过变压器变 成低压脉冲,低压的具体数值取决于被充电设备需要的电 压。最后,低压脉中经过整流、稳压电路&…

深入学习《大学计算机》系列之第1章 1.2节——问题描述与抽象

一.欢迎来到我的酒馆 第1章 1.2节,问题描述与抽象。 目录 一.欢迎来到我的酒馆二.问题描述、抽象与建模1.什么是抽象2.为什么要抽象3.什么是建模 二.问题描述、抽象与建模 什么是抽象?为什么要抽象?什么是建模?建什么模&#xff1…

Axure中动态面板使用及轮播图多种登录方式左侧导航栏之案列

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《产品经理如何画泳道图&流程图》 ⛺️ 越努力 ,越幸运 目录 一、轮播图简介 1、什么是轮播图 2、轮播图有什么作用 3、轮播图有什么特点 4、轮播图适应范围 5、…

Vue2.x源码:new Vue()做了啥

例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…

安装ThingBox Eclipse Plugin

1. ChatGPT问 The latest version of the ThingBox Eclipse Plugin requires Eclipse IDE 2021-06 or later. 2. PTC官网下载 MED-61378-CD-092_F000_Eclipse-Plugin-9-0-1.zip文件, 和 MED-61098-CD-085_F000_ThingWorx-Extension-SDK-8-5-0&#xff08;需要账号&#xff09…

C语言第四十九弹----模拟使用strcpy函数

使用C语言模拟使用strcpy函数 定义&#xff1a;strcpy 函数是 C 标准库中用于字符串复制的函数。它接受两个参数&#xff0c;第一个参数 dest 是目标字符串的指针&#xff0c;第二个参数 src 是源字符串的指针&#xff0c;函数的功能是将源字符串复制到目标字符串中&#xff0…

Visual studio+Qt开发环境搭建以及注意事项和打开qt的.pro项目

下载qt-然后安装5.14.2_msvc2017 不知道安装那个就全选5.14.2的父级按钮 https://download.qt.io/archive/qt/5.14/5.14.2/ 安装Visual studio,下载直接下一步就行 配置Visual studio的qt环境 在线安装-重启Visual studio会自动安装 离线安装-关闭Visual studio点击安装 关闭…