MechanicalSoup с логином: невозможно для browser.download_link () с указанным URL и сохраненным путем - PullRequest
0 голосов
/ 22 октября 2019

Я сейчас пытаюсь получить некоторые файлы из внутренней сети. Мне удалось получить URL-адреса некоторых файлов в формате 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 или загрузки без аутентификации с именем пользователя и паролем. Если я что-то упускаю или использую другой подход, я буду рад получить совет.

1 Ответ

1 голос
/ 23 октября 2019

В вашем фрагменте кода 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)
...