如何使用Python的requests.get()下载无直接链接的目标CSV文件
用Python Requests下载ANBIMA页面CSV的解决方案
从Chrome Network面板提取API请求细节
按F12打开开发者工具切换到Network标签,刷新页面或点击下载按钮,找到对应CSV的请求:- 复制API接口的完整URL(注意是接口地址,不是页面本身的URL)
- 查看Request Headers,抄下
User-Agent、Referer这类关键字段,很多API会校验这些信息 - 点开Params标签,把所有参数(比如日期、筛选条件)整理成键值对字典
用Requests构造下载代码
将提取到的信息填入请求中,示例代码如下:import requests # 替换为你抓到的真实API地址 api_url = "https://data.anbima.com.br/api/certificado-de-recebiveis/precos" # 替换为你从Params里获取的所有参数 request_params = { "data_referencia": "2024-05-20", "tipo_ativo": "CRI", # 其他参数按需补充 } # 替换为你抓到的请求头,至少保留User-Agent和Referer request_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "Referer": "https://data.anbima.com.br/certificado-de-recebiveis?view=precos" } # 发起请求并保存文件 res = requests.get(api_url, params=request_params, headers=request_headers) if res.status_code == 200: with open("anbima_precos.csv", "wb") as file: file.write(res.content) print("CSV文件已保存") else: print(f"请求失败,状态码:{res.status_code}")额外注意事项
- 如果页面需要登录才能下载,需先模拟登录获取Cookie,将Cookie传入requests.get的
cookies参数中 - 网站可能会更新API的参数或头信息,若下载突然失效,回到Network面板重新提取最新请求数据即可
- 若遇到动态生成的参数(如签名、时间戳),实在无法解析时,可改用selenium模拟浏览器点击下载作为备选方案
- 如果页面需要登录才能下载,需先模拟登录获取Cookie,将Cookie传入requests.get的
内容的提问来源于stack exchange,提问作者João Tanuri
相关产品推荐
相关产品推荐

