[英]Can't download csv.gz from website using Python
我目前正在尝试从以下链接下载 csv.gz 文件: https://www.cryptoarchive.com.au/bars/pair 。 如您所见,使用浏览器打开链接只会打开保存文件对话框。 但是,将链接传递给请求或 urllib 只会下载 HTML 而不是实际文件。
这是我正在尝试的当前方法:编辑:更新以反映我所做的更改。
url = "https://www.cryptoarchive.com.au/bars/pair"
file_name = "test.csv.gz"
headers = {"PLAY_SESSION": play_session}
r = requests.get(url, stream=True, headers=headers)
with open(file_name, "wb") as f:
for chunk in r.raw.stream(1024, decode_content=False):
if chunk:
f.write(chunk)
f.flush()
我能找到的唯一保存的 cookie 是 PLAY_SESSION。 将其设置为 header 不会改变我得到的结果。
此外,我尝试向登录页面发布请求,如下所示:
login = "https://www.cryptoarchive.com.au/signup"
data = {"email": email,
"password": password,
"accept": "checked"}
with requests.Session() as s:
p = s.post(login, data=data)
print(p.text)
但是,这似乎也不起作用,我尤其无法弄清楚要传递给登录页面的内容或如何实际检查复选框...
只需从私人导航浏览url
显示错误:
请先登录/注册。
要获取该文件,您需要先登录该站点。 可能通过登录,您将获得一个 session 令牌、一些 cookie 或类似的东西,您需要将其放入请求命令中。
@Daniel Argüelles 和 @Abhyudaya Sharma 的回答都帮助了我。 解决方案只是在登录网站后获取 PLAY_SESSION cookie 并将其传递给请求 function。
cookies = {"PLAY_SESSION": play_session}
url = "https://www.cryptoarchive.com.au/bars/pair"
r = requests.get(url, stream=True, cookies=cookies)
with open(file_name, "wb") as f:
for chunk in r.raw.stream(1024, decode_content=False):
if chunk:
f.write(chunk)
f.flush()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.