爬取Google网站时触发ConnectionError报错,寻求技术解决方案
解决requests请求Google时的ConnectionError问题
我来帮你分析下这个连接错误的常见原因和对应的解决办法:
1. 最可能的原因:网络访问限制
很多地区无法直接访问Google服务,这是导致这个错误的头号原因。你可以先打开浏览器尝试访问https://www.google.com/,如果浏览器都无法加载,那代码肯定也无法成功请求。这种情况下需要解决网络访问的问题。
2. 给请求添加超时参数
你的代码里没有设置超时时间,请求可能一直处于等待状态,最终触发重试耗尽的错误。修改requests.get时加上超时限制:
import requests import bs4 # 添加10秒超时,避免无限等待 res = requests.get('https://www.google.com/', timeout=10) soup = bs4.BeautifulSoup(res.text, 'lxml') # 后续代码不变...
3. 模拟浏览器请求头
部分网站会拦截非浏览器发起的请求,你可以添加User-Agent头来模拟浏览器:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } res = requests.get('https://www.google.com/', headers=headers, timeout=10)
4. 配置代理(如果需要)
如果确认是网络访问限制,你可以通过代理来发起请求:
proxies = { 'http': 'http://your-proxy-server:port', 'https': 'https://your-proxy-server:port', } res = requests.get('https://www.google.com/', proxies=proxies, headers=headers, timeout=10)
记得把your-proxy-server:port替换成你实际可用的代理地址和端口。
先测试代码逻辑是否正常
你可以先请求一个国内可访问的网站(比如百度)来验证你的代码逻辑没有问题:
import requests import bs4 res = requests.get('https://www.baidu.com/', timeout=10) soup = bs4.BeautifulSoup(res.text, 'lxml') # 输出百度的标题,验证代码正常运行 print(soup.select('title')[0].text)
如果这段代码能正常输出结果,说明你的代码本身没问题,问题就出在Google的访问限制上。
内容的提问来源于stack exchange,提问作者Ragala Santosh Kumar
相关产品推荐
相关产品推荐

