Не удается скачать PDF файл с сайта
Нужно скачать выписку из налоговой. Код работает, но при условии, что сначала заходишь и скачиваешь выписку через браузер, в противном случае на стадии последнего запроса(response_two), получаю ошибку. Вероятно это связано с куками, пытался добавить, но результат не дало. Возможно дело в заголовках, не могу разобраться самостоятельно.
import requests
def parser(inn):
url = 'https://egrul.nalog.ru'
url_one = 'https://egrul.nalog.ru/search-result/'
url_two = 'https://egrul.nalog.ru/vyp-download/'
s = requests.Session()
response = s.post(url, data={'query': inn})
response_one = requests.get(url_one + response.json()['t'], cookies=response.cookies)
response_two = requests.get(url_two + response_one.json()['rows'][0]['t'])
with open("33.pdf", "wb") as code:
code.write(response_two.content)
inn = int(input())
parser(inn)
Ответы (2 шт):
Автор решения: Andy Pavlov
→ Ссылка
Забыли куки из response_one прокинуть в response_two. Плюс на всякий случай в headers я добавил user-agent:
import requests
def parser(inn):
url = 'https://egrul.nalog.ru'
url_one = 'https://egrul.nalog.ru/search-result/'
url_two = 'https://egrul.nalog.ru/vyp-download/'
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux i686; rv:90.0) Gecko/20100101 Firefox/90.0', }
s = requests.Session()
response = s.post(url, headers=headers, data={'query': inn})
response_one = requests.get(url_one + response.json()['t'], cookies=response.cookies)
response_two = requests.get(url_two + response_one.json()['rows'][0]['t'], cookies=response_one.cookies)
with open("33.pdf", "wb") as code:
code.write(response_two.content)
inn = int(input())
parser(inn)
Автор решения: snxx
→ Ссылка
from fake_useragent import UserAgent as usr
import requests
def parser(inn):
ua = usr(cache=True)
hdr = {
'accept': '*/*',
'user-agent': ua.chrome
}
url = 'https://egrul.nalog.ru'
s = requests.Session()
resp = s.post(url, headers=hdr, data={'query': inn})
search = requests.get(f'{url}/search-result/' + resp.json()['t'], cookies=resp.cookies)
download = requests.get(f'{url}/vyp-download/' + search.json()['rows'][0]['t'], cookies=search.cookies, stream=True)
with open('33.pdf', 'wb') as file:
for chunk in download.iter_content(8000):
file.write(chunk)
if __name__ == '__main__':
parser(inn = int(input()))
Попробуйте так, может сработает.