python爬虫怎么加超时

幻夢星雲
发布: 2024-10-18 16:28:01
原创
537人浏览过
在使用 Python 爬虫时,添加超时至关重要,以避免脚本无限期等待响应。以下是最佳实践:使用 Requests 库设置超时(10 秒);使用 socket 库设置超时(10 秒);设置全局超时(10 秒);使用 Requests 库的重试机制(3 次重试,每次间隔 1 秒);处理 Requests 库抛出的超时异常(ConnectTimeout 或 ReadTimeout)。

python爬虫怎么加超时

Python爬虫添加超时的最佳实践

在使用Python爬虫时,添加超时至关重要,以避免脚本无限期地等待响应,从而导致网络阻塞。下面是如何在Python爬虫中添加超时的最佳实践:

1. 使用Requests库设置超时

Requests库是python中流行的HTTP请求库,提供了设置超时的简单方法。具体语法如下:

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

import requests

# 设置 10 秒超时
response = requests.get('https://www.example.com', timeout=10)
登录后复制

2. 使用socket库设置超时

如果你没有使用Requests库,也可以使用Python的socket库设置超时。这需要直接使用套接字来处理HTTP请求。

import socket

# 创建套接字并设置 10 秒超时
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)

# 与服务器建立连接
sock.connect(('www.example.com', 80))

# 发送请求并读取响应
sock.send('GET / HTTP/1.1\r\n'.encode())
response = sock.recv(4096)
登录后复制

3. 设置全局超时

对于频繁发送请求的爬虫,设置全局超时可以简化超时处理。可以使用以下代码设置Requests库的全局超时:

import requests

# 设置 10 秒全局超时
requests.adapters.DEFAULT_RETRIES = 10
登录后复制

4. 使用Retry机制

Requests库提供了重试机制,可以在连接失败时自动重试请求。这与超时机制配合使用,可以进一步提高爬虫的稳定性。

import requests

# 创建带有重试机制的会话
session = requests.Session()

# 设置 3 次重试,每次重试间隔 1 秒
session.mount('https://', requests.adapters.HTTPAdapter(max_retries=3, retry_delay=1))

# 发送请求
response = session.get('https://www.example.com')
登录后复制

5. 异常处理

在添加超时后,还需要对可能抛出的超时异常进行处理。Requests库将超时异常抛出为 requests.exceptions.ConnectTimeout 或 requests.exceptions.ReadTimeout。

try:
    response = requests.get('https://www.example.com', timeout=10)
except (requests.exceptions.ConnectTimeout, requests.exceptions.ReadTimeout) as e:
    # 处理超时异常
    print(f'请求超时:{e}')
登录后复制

以上就是python爬虫怎么加超时的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

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

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