gpt4 book ai didi

python - 通过 Python 3 中的请求从 API 调用下载 CSV

转载 作者:行者123 更新时间:2023-12-01 09:20:06 25 4
gpt4 key购买 nike

我正在连接到第三方网站以尝试下载特定于我公司的数据。我正在发布必填字段并生成文件,但是 csv 所在的 URL 的链接中没有 .csv。当我尝试获取网站的内容时,它只是 'b'\xef\xbb\xbf''

download = r.get('http://XXXXXapi-b.XXXstage.com/reporting/Reports?id='+str(requestID), auth=('XXXXX','XXXXX'))
print(download)
print(download.headers)
print(download.content)
content = download.content
print(content.decode('UTF-8'))

请求 ID 是在提交请求时提前定义的。

我得到的回复:

响应 [200]

{'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Content- Length': '3', 'Content-Type': 'text/csv', 'Expires': '-1', 
'Content-Disposition': 'attachment; filename=Report.csv',
'Access-Control-Allow-Origin': '*', 'Date': 'Thu, 14 Jun 2018 14:17:46 GMT'}

b'\xef\xbb\xbf'

-

我是不是看错了?该内容需要解码吗?还有内容吗?内容长度是否意味着实际上只有 3 个结果。最后,有没有办法从这个 get 下载 csv 或者 csv 数据应该在内容中?

最佳答案

从回复来看:

  • 代码 200 表示服务器报告处理成功
  • Content-Type: text/csv表示返回的内容是CSV已格式化
  • Content-Length: 3 表示内容长度为 3 个字节

3 个字节对于 CSV 来说似乎很短,并且内容(您使用 wsodownload.content 访问的内容)确实是一些不可打印的字符。

看来您的请求没有任何问题,但服务器返回了无效响应。

顺便说一句,您可以使用正确的方法将参数作为查询字符串传递,即使用 params 参数传递给 requests.get():

requests.get('http://XXXXapi-b.XXXXstage.com/reporting/Reports', params={'id': requestID}, auth=('XXXX','XXXX'))

关于python - 通过 Python 3 中的请求从 API 调用下载 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50861567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com