无法使用 Python 从网站下载 csv.gz

Can't download csv.gz from website using Python

我目前正在尝试从以下 link 下载 csv.gz 文件:https://www.cryptoarchive.com.au/bars/pair。如您所见,使用浏览器打开 link 只会打开保存文件对话框。但是,将 link 传递给请求或 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 显示错误:

Please login/register first.

要获取该文件,您需要先登录该站点。登录后,您可能会得到一个会话令牌、一些 cookie 或类似的东西,您需要将其放入请求命令中。

@Daniel Argüelles 和@Abhyudaya Sharma 的回答对我都有帮助。解决方案是在登录网站后简单地获取 PLAY_SESSION cookie 并将其传递给请求函数。

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()