Я иду на этот государственный сайт и пытаюсь получить там PDF-файлы с информацией об увольнении. Когда я запускаю свой код, я не получаю ошибок. Однако файлы .pdf продолжают возвращаться испорченными - Adobe не может их открыть.
from bs4 import BeautifulSoup from requests import Session import re import urllib.request import requests import time session = Session() session.headers.update({ "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" }) init_session = session.get(url="https://mn.gov/deed/programs-services/dislocated-worker/reports/") soup = BeautifulSoup(init_session.content, "html.parser") MN_1 = soup.find_all('a', {'href': re.compile(r'/deed/assets/mass-layoff.*')}) MN_1 = [str(a) for a in MN_1] MN_1 = [a for a in MN_1 if "2020" in a] MN_1 = [re.search("/deed.*pdf", a).group(0) for a in MN_1] url_head = 'https://mn.gov' # looping through list of urls to get all 2020 Minnesota WARN reports # There's a problem here; all of the returned .pdfs are corrupted; I added the time.sleep() thinking # maybe python just needed more time to render them or something; still get bad .pdfs for url in range(len(MN_1)): time.sleep(5) url_u = url_head+MN_1[url] filename = 'Minnessota_WARN'+str(url)+'.pdf' stuff = requests.get(url_u) with open(filename, 'wb') as f: f.write(stuff.content)
На iPad, поэтому не могу проверить, но может попробовать шаблон
with open(filename, 'wb') as fd: for chunk in stuff.iter_content(chunk_size=128): fd.write(chunk)
И посмотреть, поможет ли это?