如何避免抓取CME网页时出现程序冻结问题?
解决requests.get访问CME网站冻结的问题
添加请求头模拟浏览器:CME这类金融网站会检测请求来源,直接调用
requests.get不带请求头容易被拦截,导致请求挂起。
示例代码:import requests from bs4 import BeautifulSoup URL = 'https://www.cmegroup.com/markets/interest-rates/us-treasury/2-year-us-treasury-note.settlements.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } page = requests.get(URL, headers=headers, timeout=10)强制设置超时时间:
requests默认无超时限制,若网站无响应会一直等待,添加timeout参数可避免无限挂起,同时快速排查是网络问题还是反爬拦截。关闭自动重定向排查状态:部分网站会将请求重定向到验证页面,自动重定向后可能因验证流程卡住。可关闭自动重定向查看状态码:
page = requests.get(URL, headers=headers, allow_redirects=False, timeout=10) print(page.status_code)若返回3xx状态码,需手动跟进重定向地址,或检查是否需要完成验证步骤。
用Session维持会话:部分网站需要持续的会话状态,使用
requests.Session()可保存cookies和请求上下文,避免每次请求都被重新验证:session = requests.Session() session.headers.update(headers) page = session.get(URL, timeout=10)
内容的提问来源于stack exchange,提问作者chitown2015
相关产品推荐
相关产品推荐

