Python requests.get访问CNB URL报InvalidURL错误求助
问题解决步骤
1. 核心问题:URL格式错误
你遇到的InvalidURL错误是因为URL字符串中包含多余的空格,比如https: //、www.cnb.cz /、rok = 2023这些位置的空格,导致requests无法正确识别主机地址。
修正后的URL
将所有空格删除,正确的URL应为:
url = "https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/rok.txt?rok=2023"
2. 访问优化建议
即使修正URL后,部分网站可能会验证请求头,你可以使用规范的请求头尝试,同时建议保留证书验证(除非明确确认站点证书问题):
import requests HEADERS = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5' } url = "https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/rok.txt?rok=2023" response = requests.get(url, headers=HEADERS) # 检查响应状态 if response.status_code == 200: print(response.text[:500]) # 打印前500字符验证内容 else: print(f"请求失败,状态码: {response.status_code}")
3. 额外排查点
如果仍无法访问:
- 先通过浏览器手动打开目标URL,确认网络环境能正常访问该站点
- 若站点有反爬机制,可尝试添加
Referer请求头字段模拟浏览器跳转 - 避免短时间内频繁发送请求,防止触发站点限流
内容的提问来源于stack exchange,提问作者Vladimir Bayer
相关产品推荐
相关产品推荐

