【发布时间】:2021-11-28 17:52:39
【问题描述】:
我正在尝试从通过电子邮件发送给我的共享链接自动下载文本文件。原始链接指向一个包含两个文件的文件夹,但我得到了我需要的文件的直接下载链接:
https://'abc'-my.sharepoint.com/personal/gamma_'abc'/_layouts/15/download.aspx?UniqueId=a0db276e%2Ddf75%2D49b7%2Db671%2D1c49e365ef3f
当我在网络浏览器中输入上述网址时,我会弹出打开或下载文件的选项。我正在尝试编写一些 Python 代码来自动下载文件,这就是我到目前为止所想出的
import requests
url = "https://<abc>-my.sharepoint.com/personal/gamma_<abc>/_layouts/15" \
"/download.aspx?UniqueId=a0db276e%2Ddf75%2D49b7%2Db671%2D1c49e365ef3f "
hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.5',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Connection': 'keep-alive'}
myfile = requests.get(url, headers=hdr)
open('c:/users/scott/onedrive/desktop/gamma.las', 'wb').write(myfile.content)
我最初尝试不使用用户代理,当我打开 gamma.las 时,文件中只有 403 FORBIDDEN。如果我也发送标头,则该文件包含看起来像 Microsoft 登录页面的 HTML,所以我假设我缺少一些身份验证步骤。
我与这个组织没有任何关系——有人通过电子邮件向我发送了这个链接,让我下载一个文本文件,该文件可以通过浏览器正常工作,但不能通过 Python。我没有登录任何东西来获取它,因为我没有此域的用户名或密码。
我可以使用请求来做到这一点吗?如果没有,我是否可以在没有用户凭据的情况下使用该公司的 Sharepoint 的 REST API?
【问题讨论】:
标签: python sharepoint python-requests download