使用Python requests.get无法下载XML文件,请求排查解决方法
解决requests.get卡住无法获取XML文件的问题
你的脚本一直无输出且处于运行状态,大概率是网站反爬机制拦截了非浏览器请求,或是未设置超时导致无限等待。以下是可行的解决方案:
修改后的代码(核心修复)
import requests def download_xml_file(url, save_path): # 模拟Chrome浏览器的请求头,绕过基础反爬拦截 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' } try: # 设置30秒超时,避免服务器无响应时脚本无限挂起 response = requests.get(url, headers=headers, timeout=30) # 主动触发HTTP错误(如403、500等),便于排查问题 response.raise_for_status() with open(save_path, 'wb') as file: file.write(response.content) print(f"XML文件已成功下载并保存至: {save_path}") except requests.exceptions.RequestException as e: print(f"下载出错: {e}") url = 'https://apps.fcc.gov/eas/GetEntityDownload.xml?type=G' save_path = 'file.xml' # 替换为你的实际保存路径 download_xml_file(url, save_path)
额外排查步骤
- 如果仍报
403 Forbidden,可以复制浏览器请求的完整头信息(包括Accept、Referer等)添加到headers中,完全模拟浏览器请求 - 检查网络环境:确认IP未被网站封禁,或切换网络(如手机热点)测试
- 打印响应细节定位问题:在
response.raise_for_status()后添加以下代码,查看网站返回内容:
print("状态码:", response.status_code) print("响应内容预览:", response.text[:500])
内容的提问来源于stack exchange,提问作者Juan
相关产品推荐
相关产品推荐

