Python网页爬取遇Max retries exceeded错误,求BREEAM数据爬取方案
BREEAM建筑数据库爬取连接错误的解决思路
你需要爬取BREEAM平台的65页建筑数据库,编写的Python代码在运行时触发了以下连接错误:
ConnectionError: HTTPSConnectionPool(host='tools.breeam.com', port=443): Max retries exceeded with url: /projects/explore/buildings.jsp?sectionid=0&projectType=Offices&rating=&countryID=56&client=&description=&certBody=&certNo=&developer=&location=London&buildingName=&assessor=&subschemeid=0&Submit=Search (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x0000020523F02048>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',))
以下是针对性的解决思路:
一、先排查网络基础问题
- 手动在浏览器中访问目标URL,确认是否能正常打开。如果无法访问,说明域名解析失败或网站本身不可达,可尝试切换DNS服务器(比如用8.8.8.8)、更换网络环境(如手机热点)。
- 检查本地防火墙、杀毒软件是否拦截了对
tools.breeam.com的请求,临时关闭相关防护工具测试。 - 如果使用代理网络,确认代理配置正确,且代理能正常访问目标域名。
二、代码层面优化调整
- 添加请求头模拟浏览器:很多网站会拦截无标识的爬虫请求,给
requests.get添加浏览器UA头:
from bs4 import BeautifulSoup import requests 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' } url = 'https://tools.breeam.com/projects/explore/buildings.jsp?sectionid=0&projectType=Offices&rating=&countryID=56&client=&description=&certBody=&certNo=&developer=&location=London&buildingName=&assessor=&subschemeid=0&Submit=Search' req = requests.get(url, headers=headers, timeout=10) content = req.text
- 设置超时参数:避免请求无限等待,添加
timeout参数(单位秒),防止因网络波动导致重试耗尽。 - 临时关闭SSL验证(仅测试用):如果是SSL证书验证失败导致的问题,可临时关闭验证(不推荐生产环境使用):
req = requests.get(url, headers=headers, timeout=10, verify=False)
- 配置Cookie(若需登录):如果目标页面需要登录才能访问,先在浏览器登录后,复制Cookie信息到代码中:
cookies = { # 替换为浏览器中获取的实际Cookie键值对 'SESSIONID': 'xxxxxxxxx', 'user_token': 'xxxxxxxxx' } req = requests.get(url, headers=headers, cookies=cookies, timeout=10)
三、其他排查方向
- 确认目标域名拼写无误,检查是否存在
tools.breeam.com的拼写错误。 - 网站可能有反爬机制,比如IP封禁、频率限制,可尝试添加请求间隔(用
time.sleep()),或使用IP代理池分散请求来源。
内容的提问来源于stack exchange,提问作者user19258348
相关产品推荐
相关产品推荐

