#python #beautifulsoup #python-requests
#python #beautifulsoup #python-запросы
Вопрос:
У меня есть веб-сайт, на котором я хочу загрузить PDF-файл с помощью запроса, веб-сайт требует, чтобы вы вошли в систему, после чего вы сможете получить доступ к файлу pdf.
Я использую этот скрипт, но он не работает, в чем проблема? Я использовал некоторый код из другого сообщения, но не смог понять, как решить эту проблему!!!
import requests
import sys
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'
}
login_data = {
'Email': 'My-email',
'Password': 'My-password',
'login': 'Login'
}
url = 'https://download-website' #The website i want to download the file from
filename = 'filename.pdf'
# creating a connection to the pdf
print("Creating the connection ...")
with requests.session() as s:
url1 = 'https://login-website/' #The website i want to log in into
r = s.get(url1, headers=headers, stream=True)
soup = BeautifulSoup(r.content, 'html5lib')
login_data['__RequestVerificationToken'] = soup.find('input', attrs={'name':'__RequestVerificationToken'})['value']
r = s.post(url1, data=login_data, headers=headers, stream=True)
with requests.get(url, stream=True) as r:
if r.status_code != 200:
print("Could not download the file '{}'nError Code : {}nReason : {}nn".format(
url, r.status_code, r.reason), file=sys.stderr)
else:
# Storing the file as a pdf
print("Saving the pdf file :n"{}" ...".format(filename))
with open(filename, 'wb') as f:
try:
total_size = int(r.headers['Content-length'])
saved_size_pers = 0
moversBy = 8192*100/total_size
for chunk in r.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
saved_size_pers = moversBy
print("r=>> %.2f%%" % (
saved_size_pers if saved_size_pers <= 100 else 100.0), end='')
print(end='nn')
except Exception:
print("==> Couldn't save : {}\".format(filename))
f.flush()
r.close()
r.close()
Ответ №1:
Я могу только догадываться, потому что я не знаю ссылку на веб-сайт. Попробуйте записать ключи пользовательских данных в нижнем регистре. Если это не сработает, попробуйте выяснить, что ожидает форма регистрации на веб-сайте, с помощью инструментов разработчика вашего браузера.