使用Python下载Sharepoint Excel文件

5
我正在尝试使用Python脚本从SharePoint存储库下载Excel文件。我使用了Office365-Rest-Python-Client,该客户端在https://github.com/vgrem/Office365-REST-Python-Client的示例中定义,并且我可以访问所有需要的文件/目录。问题出现在我想要下载任何文件时。我尝试了几种方法,但都没有成功:wget.download("https://shprepos.com/path/file.xlsx", local_path, bar=None)
但是我收到了“403禁止访问”的错误。我还尝试过使用requests:
req = requests.get(ruta, auth=requests.auth.HTTPBasicAuth(username, password), headers=headers)
with open(local_file, 'wb') as file:
    file.write(req.content)

使用此代码,我得到的是网页,而不是Excel文件,我不明白为什么,因为如果我访问URL "https://shprepos.com/path/file.xlsx",并且有正确的身份验证,我会下载该文件。您知道使用身份验证用wget下载该文件的方法吗?还是我在requests.get中做错了什么?我需要一种获取该文件的方法,使用我在脚本开头进行的身份验证。
ctx_auth = AuthenticationContext(shp_url)
token = ctx_auth.acquire_token_for_user(username, password)

你知道如何做到这一点吗?也许Python客户端有一个下载文件的方法,但我找不到它!

非常感谢!:)

祝好

1个回答

3

是的!我找到了解决方案!!在下载文件之前,我需要获取授权。我在Office365-Python-Client的测试文件夹中找到了一个示例。因此,在使用请求获取URL之前,您需要获取授权:

options = RequestOptions(shp_file_path)
ctx_auth.authenticate_request(options)
options.headers["X-FORMS_BASED_AUTH_ACCEPTED"] = "f"
options.headers["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0)"
    req = requests.get(shp_file_path, headers=options.headers, verify=True, allow_redirects=True)
    if req.ok:
        with open(local_file, 'wb') as file:
            file.write(req.content)

如果您没有收到auth_request并添加了头信息,那么您将无法获取文件。希望这能对未来的某些人有所帮助,因为它对我很有效!欢迎任何改进意见!! :)

3
请提供您使用的完整代码?我也在尝试做同样的事情,但没有成功。 - RoadRunner
我得到了“RequestOptions”名称未定义的错误,目前还不确定原因,但如果我找到了,我会在这里更新。 - Rob S
完整代码有更新吗? - matt.aurelio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接