Python 官方文档:入门教程 => 点击学习
python程序根据url从互联网上批量获取数据时,设置Http或Socket超时,来防止爬虫爬取某个页面时间过长,导致程序卡置不前。 1、socket 全局设置。 import socketsocket.setdefaul
python程序根据url从互联网上批量获取数据时,设置Http或Socket超时,来防止爬虫爬取某个页面时间过长,导致程序卡置不前。
全局设置。
import socketsocket.setdefaulttimeout(1)
t:代表经过t秒后,如果还未下载成功,自动跳入下一次操作,此次下载失败 。
使用timeout 参数可以设定等待连接的秒数,如果等待超时,Requests会抛出异常。
示例代码1:
import requestsres = requests.get('https://GitHub.com', timeout=0.01)print(res)
运行结果:
示例代码2:
import requestsres = requests.get('https://github.com', timeout=10)print(res)
运行结果:
注意:timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)。
示例代码:
import timeimport requestsfrom requests.adapters import HTTPAdapters = requests.Session()s.mount('http://', HTTPAdapter(max_retries=3))s.mount('https://', HTTPAdapter(max_retries=3))print(time.strftime('%Y-%m-%d %H:%M:%S'))try: res = s.get('https://github.com', timeout=2) print(res)except requests.exceptions.RequestException as e: print(e)print(time.strftime('%Y-%m-%d %H:%M:%S'))
运行结果:
注意:max_retries 为最大重试次数,重试3次,加上最初的一次请求,一共是4次,所以上述代码运行耗时至少是8秒而不是6秒。
示例代码1:
import requestsdef get_html(url, timeout=5): i = 0 while i < 3: try: html = requests.get(url, timeout=timeout) return html.text except requests.exceptions.RequestException as e: i += 1 print(e)res = get_html('https://github.com', timeout=0.1)print(res)
运行结果:
示例代码2: 【试图提大timeout的值】
import requestsdef get_html(url, timeout=5): i = 0 while i < 3: try: html = requests.get(url, timeout=timeout) return html.text except requests.exceptions.RequestException as e: i += 1 print(e)res = get_html('https://github.com', timeout=10)print(res)
运行结果:
来源地址:https://blog.csdn.net/weixin_44799217/article/details/129544451
--结束END--
本文标题: python-requests请求超时解决方案
本文链接: https://lsjlt.com/news/385149.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0