Python爬虫怎样设置爬取延时_Python爬虫控制访问频率避免被封的延时设置

看不見的法師
发布: 2025-11-06 21:55:01
原创
587人浏览过
合理设置爬取延时可有效避免IP被封,通过time.sleep()实现固定或随机延时,结合User-Agent、Session及Scrapy的自动限速配置,模拟人类行为降低反爬风险。

python爬虫怎样设置爬取延时_python爬虫控制访问频率避免被封的延时设置

在使用Python编写爬虫时,频繁请求目标网站容易触发反爬机制,导致IP被封禁。为了避免这种情况,合理设置爬取延时、控制访问频率是关键措施之一。通过引入时间间隔,让爬虫行为更接近人类操作,能有效降低被识别为自动化程序的风险。

使用time.sleep()进行基础延时

最简单直接的延时方式是使用Python内置的time.sleep()函数,在每次请求之间暂停一段时间。

示例:

import requests
import time
<p>urls = ['<a href="https://www.php.cn/link/a306a13c6c1ee387390fdc96c7bdca66">https://www.php.cn/link/a306a13c6c1ee387390fdc96c7bdca66</a>', '<a href="https://www.php.cn/link/922a7fd3b1c537453af87329140dcfb2">https://www.php.cn/link/922a7fd3b1c537453af87329140dcfb2</a>']
for url in urls:
response = requests.get(url)</p><h1>处理响应</h1><pre class='brush:python;toolbar:false;'>print(f"已抓取: {url}")
time.sleep(2)  # 每次请求后等待2秒
登录后复制

这种固定延时适用于大多数普通场景,一般建议设置在1~3秒之间,避免对服务器造成压力。

立即学习Python免费学习笔记(深入)”;

使用随机延时模拟人类行为

固定间隔仍可能被识别为机器行为。采用随机延时能更真实地模拟用户浏览习惯。

结合random模块实现动态等待:

import time
import random
<h1>随机等待1到3秒</h1><p>time.sleep(random.uniform(1, 3))</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/950">
                            <img src="https://img.php.cn/upload/ai_manual/000/000/000/175680003823895.png" alt="ViiTor实时翻译">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/950">ViiTor实时翻译</a>
                            <p>AI实时多语言翻译专家!强大的语音识别、AR翻译功能。</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="ViiTor实时翻译">
                                <span>116</span>
                            </div>
                        </div>
                        <a href="/ai/950" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="ViiTor实时翻译">
                        </a>
                    </div>
                
登录后复制

也可使用randinttriangular等方法调整分布,使间隔更具自然波动。

结合请求框架的高级控制(如Scrapy)

若使用Scrapy框架,可通过配置项自动管理下载延迟:

settings.py中添加:

# 开启自动限速
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 1
AUTOTHROTTLE_MAX_DELAY = 5
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
<h1>或手动设置固定延迟</h1><p>DOWNLOAD_DELAY = 2
RANDOMIZE_DOWNLOAD_DELAY = True
CONCURRENT_REQUESTS_PER_DOMAIN = 2</p>
登录后复制

这些设置能让Scrapy根据服务器响应自动调节请求频率,更加智能和安全。

使用Session与请求头配合延时策略

除了时间控制,搭配合理的请求头和会话管理也能提升稳定性:

  • 设置User-Agent模拟浏览器访问
  • 使用Session保持连接复用,减少开销
  • 结合延时策略,整体请求更接近正常用户行为

示例:

session = requests.Session()
session.headers.update({'User-Agent': 'Mozilla/5.0 ...'})
<p>for url in urls:
response = session.get(url)
time.sleep(random.uniform(1.5, 3.5))</p>
登录后复制

基本上就这些。合理设置延时不只是加个sleep,而是结合随机性、请求头、并发控制等多方面协调。既能保护目标服务器,也能提高爬虫的长期可用性。不复杂但容易忽略细节。

以上就是Python爬虫怎样设置爬取延时_Python爬虫控制访问频率避免被封的延时设置的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号