首页 > 解决方案 > 登录的 MechanicalSoup:无法使用给定的 URL 和保存路径进行 browser.download_link()

问题描述

我目前正在尝试从内部网络获取一些文件。我设法以 https://example.site/files/testfile.pdf. 现在,我尝试使用以下命令下载此特定文件:

import mechanicalsoup

browser = mechanicalsoup.StatefulBrowser()
for s in site_links ##s = 'https://example.site/file/.../.../file.pdf'
##print(s)
browser.download_link(s, "X:/FolderA/FolderB/test.pdf")

但是每次 PyCharm 向我抛出一个我不明白的错误(我是 Python 新手)。

我四处搜索,但我发现的只是 Python2 相关的东西或未经用户名和密码验证的下载。

标签: pythonpython-3.xurldownloadmechanicalsoup

解决方案


在您的代码段中,s是一个 URL;但browser.download_link需要一个链接,即类似<a href="...">...</a>.

download_link如果你有链接,你可以通过它。如果没有,MechanicalSoup 没有直接从 URL 下载的便利功能,因此您需要做更多的工作。例如,以下(未经测试的)代码应该可以满足您的需求:

browser = mechanicalsoup.StatefulBrowser()
response = browser.open(url)
with open('file_to_download_to', 'wb') as fid:
    fid.write(response.content)

推荐阅读