python - 如何使用 python 下载需要登录的 .csv 文件?

标签 python python-requests

我正在尝试登录并从此网址下载 .csv 文件 https://www.mapmyfitness.com/workout/export/csv 。该 url 将页面重定向到此 url: https://www.mapmyfitness.com/auth/login?next=/workout/export/csv

我尝试实现以下代码,但出现此错误:

username = 'email'
password = 'password'

url1 = 'https://www.mapmyfitness.com/workout/export/csv'
url2 = 'https://www.mapmyfitness.com/auth/login?next=/workout/export/csv'

payload = {'email': username, 'password': password}
requests.post(url2, data=payload)

with requests.Session() as s:
    p = s.post(url2, data=payload)
    print(p.text)

    r = s.get(url2)
    # print(r.text)

{"error":"validation/username,password","error_description":"Post body failed validation: {\"username\":\"validation/string\",\"password\":\"validation/string\"}"}

我已经尝试了很多其他的事情,但这是我最接近的页面,而不仅仅是在登录页面上吐出 HTML 信息。任何帮助将不胜感激!

最佳答案

您的问题是您试图将登录页面视为 API 调用,而这些是不同的动物。您需要让 python(selenium 可以做到这一点)实际填写实际的输入字段并解析结果。这看起来很麻烦,并且对网页的任何更改都会破坏这一点。

看起来他们的软件有一个 API,你实际上应该看看这个:

https://developer.underarmour.com/

单击一个按钮,并从 How to press login button in selenium python 3 中提取 Selenium

x路径:

elem = driver.find_element_by_xpath("//input[@class='userid-button'][@type='submit']")
elem.click()

CSS:

elem = driver.find_element_by_css_selector("input.userid-button[type=submit]")
elem.click()

关于python - 如何使用 python 下载需要登录的 .csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53340380/

相关文章:

python - 使用 python 连接到 Rest API。如何设置标题和参数?

python - Beautifulsoup HTML表格解析——只能获取到最后一行?

python - 如何在Python中通过管道执行命令?

python - 如何确定在 Windows 中启动 python 脚本的方法?

python - 证书过期,无法使用 certify=True; requests.exceptions.SSLError 证书验证失败

具有多线程的 Python 请求

python - Plotly:如何使用 Pandas 数据框定义桑基图的结构?

python - "__docformat__"在 Python 中有什么用?

python - 由于 Python 中的请求不安全的 URL 而捕获 SSLError?

python - 将请求的响应保存到文件