python - 登录的 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 相关的东西或未经用户名和密码验证的下载。
解决方案
在您的代码段中,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)
推荐阅读
- javascript - TinyMCE——点击上传文件按钮时出现“HTTP Error 404.0 - Not Found”错误
- google-sheets-api - 我如何可以访问电子表格中的多张工作表之一
- forms - 如何在 JSP 表单中一键提交 2 个或多个值
- python - 如何从 tkinter 复选框中删除刻度
- java - 如何让一个grpc客户端调用多个服务器?
- unity3d - 如何从构建设置中删除已删除的场景
- algorithm - 是否有一种算法可以探索网格中的所有单元格,不包括冗余单元格?
- function - 在 Elixir 中,当 lambda 处于闭包中时,如何将 lambda 提取到命名函数?
- php - Laravel Job 立即在浏览器中执行,而不是在后台队列中运行
- c# - 我可以在 C# 的代码编辑器中设置断点吗