Python爬虫报错:requests.exceptions.ConnectionError原因与5种解决方法
写爬虫的时候,最常遇到的报错之一就是:
requests.exceptions.ConnectionError: HTTPConnectionPool
这篇文章帮你一次性搞清楚原因和解决办法。
报错原因
这个错误的意思是:你的Python程序连不上目标服务器。常见原因有4种:
- 网络不通(断网了/对方服务器挂了)
- 代理设置错误
- 请求频率太高被对方封IP
- DNS解析失败
解决方法
方法一:检查网络连接
先确认你的电脑能正常访问目标网站:
import requests
try:
resp = requests.get("https://www.baidu.com", timeout=5)
print("网络正常")
except:
print("网络异常,先检查网络连接")如果百度都访问不了,那就是你电脑的网络问题。
方法二:设置超时时间(推荐)
给请求加一个超时时间,避免卡死:
resp = requests.get(url, headers=headers, timeout=10)
建议设10-30秒,超过时间自动放弃,程序继续往下走。
方法三:加异常处理
最规范的写法,用try-except包住请求:
try:
resp = requests.get(url, headers=headers, timeout=10)
resp.encoding = "utf-8"
print(resp.text)
except requests.exceptions.ConnectionError:
print("连接失败,检查网络或目标网站")
except requests.exceptions.Timeout:
print("请求超时")
except Exception as e:
print(f"其他异常:{e}")方法四:关掉代理
如果你电脑开了代理(VPN/梯子),requests可能会走代理导致连不上:
# 显式禁用代理
resp = requests.get(url, headers=headers, proxies={"http": "", "https": ""})或者在环境变量里临时关掉。
方法五:加延时,降低频率
如果是因为请求太频繁被服务器断开连接:
import time import random # 每次请求间隔2-4秒 time.sleep(random.uniform(2, 4)) resp = requests.get(url, headers=headers)
总结
遇见 ConnectionError 不要慌,按这个顺序排查:
① 网络通不通? → 方法一 ② 有没有设超时? → 方法二 ③ 有没有try包住? → 方法三 ④ 代理有没有关? → 方法四 ⑤ 是不是请求太快? → 方法五
大部分情况下,方法二+方法三组合就能解决绝大多数问题。
到此这篇关于Python爬虫报错:requests.exceptions.ConnectionError原因与5种解决方法的文章就介绍到这了,更多相关Python爬虫报错requests.exceptions.ConnectionError内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
AI生成图片Stable Diffusion环境搭建与运行方法
Stable Diffusion是一种基于扩散过程的生成模型,由Ge et al.在2021年提出,该模型利用了随机变量的稳定分布,通过递归地应用扩散过程来生成高质量的图像,这篇文章主要介绍了AI图片生成Stable Diffusion环境搭建与运行,需要的朋友可以参考下2023-05-05
Django使用详解:ORM 的反向查找(related_name)
今天小编就为大家分享一篇Django使用详解:ORM 的反向查找(related_name),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-05-05


最新评论