如何设置爬虫的延时避免被封禁

ops/2025/3/17 9:15:01/

在使用爬虫获取数据时,合理设置延时是避免被目标网站封禁的关键策略之一。以下是一些常见的方法和技巧:

一、使用 time.sleep() 设置固定延时

time.sleep() 是 Python 中最常用的延时方法,可以在每次请求之间设置固定的延时,从而降低请求频率。

Python

import time
import requestsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}urls = ["http://example.com/page1", "http://example.com/page2"]  # 示例URL列表for url in urls:response = requests.get(url, headers=headers)time.sleep(1)  # 每次请求间隔1秒

二、使用随机延时

为了更好地模拟真实用户的行为,可以设置随机延时。这可以通过 random.uniform()random.randint() 实现。

Python

import time
import random
import requestsheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}urls = ["http://example.com/page1", "http://example.com/page2"]  # 示例URL列表for url in urls:response = requests.get(url, headers=headers)delay = random.uniform(0.5, 2.0)  # 随机延时0.5到2秒time.sleep(delay)

三、使用 Scrapy 框架的 DOWNLOAD_DELAY 设置延时

如果你使用的是 Scrapy 框架,可以通过设置 DOWNLOAD_DELAY 来控制请求间隔。

Python

# 在 settings.py 中设置
DOWNLOAD_DELAY = 2  # 每次请求间隔2秒

此外,还可以结合 RandomDelayMiddleware 实现随机延时。

四、使用代理服务器

使用代理服务器可以隐藏真实 IP 地址,降低被封禁的风险。可以结合 requests 库使用代理。

Python

import requests
import randomproxy_list = [{"http": "http://proxy1.example.com:8080"},{"http": "http://proxy2.example.com:8080"},
]url = "http://example.com/data"for _ in range(5):  # 示例:发送5次请求proxy = random.choice(proxy_list)response = requests.get(url, proxies=proxy)time.sleep(1)  # 每次请求间隔1秒

五、结合其他策略

除了设置延时,还可以结合其他策略来降低被封禁的风险:

  • 随机更换 User-Agent:模拟不同的浏览器访问。

  • 遵守 robots.txt 文件:遵循目标网站的爬取规则。

  • 使用会话和 Cookies:模拟真实用户的浏览行为。

六、总结

合理设置延时是避免爬虫被封禁的重要策略。通过使用 time.sleep() 设置固定延时、使用随机延时、结合 Scrapy 框架的 DOWNLOAD_DELAY、使用代理服务器以及结合其他策略,可以有效降低爬虫被封禁的风险。在实际应用中,建议根据目标网站的实际情况灵活调整延时策略。


http://www.ppmy.cn/ops/166445.html

相关文章

蓝桥杯15届省C

洛谷P10904挖矿 #include<bits/stdc.h> using namespace std; int n, m; const int N 2000010; int l[N], r[N]; int cnt; int main(){cin >> n >> m;for(int i 1; i < n; i){int x; cin >> x;if(x > 0){r[x];}else if(x < 0){l[-x];}else…

HTML 属性

HTML 属性 HTML 元素可以设置属性 属性可以在元素中添加附加信息 属性一般描述于开始标签 属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 属性实例 HTML 链接由 <a> 标签定义。链接的地址在 href 属性中指定&#xff1a; <…

ospf单区域

OSPF单区域是指将整个自治系统&#xff08;AS&#xff09;内的所有路由器划分到同一个逻辑区域&#xff08;Area 0&#xff0c;即骨干区域&#xff09;中运行的OSPF协议模式。以下是其核心要点&#xff1a; 一、定义与核心特点 ‌区域统一性‌ 所有路由器均属于同一区域&…

HTML 基础夯实:标签、属性与基本结构的学习进度(一)

一、开启 HTML 学习大门 在当今数字化时代&#xff0c;网页已成为信息传播和交互的重要载体 &#xff0c;而 HTML 作为构建网页的基石&#xff0c;其重要性不言而喻。HTML&#xff0c;即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#xff0c;它定义了…

区块链中的数字签名:安全性与可信度的核心

数字签名是区块链技术的信任基石&#xff0c;它像区块链世界的身份证和防伪标签&#xff0c;确保每一笔交易的真实性、完整性和不可抵赖性。本文会用通俗的语言&#xff0c;带你彻底搞懂区块链中的数字签名&#xff01; 文章目录 1. 数字签名是什么&#xff1f;从现实世界到区块…

周志华机器学习西瓜书 第九章 聚类-学习笔记

一、聚类任务 聚类是无监督学习中非常典型的任务&#xff0c;聚类的目的是将数据样本划分为若干个通常不相交的子集&#xff0c;每一个子集成为"簇-cluster"&#xff0c;其即可以作为一个单独过程&#xff0c;用于找寻数据内在的分布结构&#xff0c;也可作为分类等其…

opencv-显示图片

安装软件 sudo apt install python3 //确保虚拟机只有python3 ln -sf /usr/bin/python3.6 /usr/bin/python sudo apt install python3-pip pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple pip install opencv-contrib-python -i https://pypi.tuna…

H5DS编辑器是如何让企业快速构建动态页面

H5DS编辑器核心亮点&#xff1a; 1.拖拽式操作&#xff0c;小白友好&#xff1a;无需设计与代码基础&#xff01;通过简单拖拽元素、调整文字和动画&#xff0c;即可生成交互式H5页面。内置海量模板和素材库&#xff0c;支持自定义设计风格&#xff0c;轻松适配企业品牌需求。…