@ubirust

Как парсить nalog.ru?

Приветствую! Есть код, который парсит(точнее скачивает pdf) сведения ГРЮЛ/ЕГРИП из сайта ссылка удалена модератором.

Проблема в том, что если до этого НЕ был скачан этот файл вручную, то скачанный pdf файл НЕ открывается. А если же вручную скачать выписку по конкретному ИНН, открыть его (потом можно удалить), а далее скачать pdf файл через скрипт, то pfd открывается. Короче говоря, без первоначальной ручной скачки, скрипт не работает. Не понимаю в чем может быть дело. Что можно улучшить?

Сам код:
import requests

url = 'https://egrul.nalog.ru'
url_1 = 'https://egrul.nalog.ru/search-result/'
url_2 = 'https://egrul.nalog.ru/vyp-download/'
inn = 183312354910

cookies = {
    'uniI18nLang': 'RUS',
    '_ym_uid': '1664472931742415326',
    '_ym_d': '1678211714',
    '_ym_isad': '2',
    '_ym_visorc': 'w',
    'JSESSIONID': '188049416B80D8F47C75BD5B43D3163B',
}

headers = {
    'Accept': '*/*',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Connection': 'keep-alive',
    # 'Cookie': 'uniI18nLang=RUS; _ym_uid=1664472931742415326; _ym_d=1678211714; _ym_isad=2; _ym_visorc=b; JSESSIONID=8C1AB43D83D8F34BCDF7880886BC6777',
    'Referer': 'https://egrul.nalog.ru/index.html',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
    'X-Requested-With': 'XMLHttpRequest',
}

params = {
    'r': '1678279653846',
    '_': '1678279653846',
}

s = requests.Session()
# s.get(url + '/index.html')
# print(s.cookies, s.headers)

r = s.post(url, data={'query': inn}, cookies=cookies, headers=headers)
print(r.json()['t'])

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Connection': 'keep-alive',
    # 'Cookie': 'uniI18nLang=RUS; _ym_uid=1664472931742415326; _ym_d=1678211714; _ym_isad=2; _ym_visorc=b; JSESSIONID=8C1AB43D83D8F34BCDF7880886BC6777',
    'Referer': 'https://egrul.nalog.ru/index.html',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-User': '?1',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
}

r1 = s.get(url_1 + r.json()['t'], cookies=cookies, headers=headers)
print(r1.json()['rows'][0]['n'])
print(r1.json()['rows'][0]['t'])

r2 = s.get(url_2 + r1.json()['rows'][0]['t'], cookies=cookies, headers=headers)
with open(f'{r1.json()["rows"][0]["n"]}_{str(inn)}.pdf', 'wb') as f:
    f.write(r2.content)
  • Вопрос задан
  • 299 просмотров
Пригласить эксперта
Ответы на вопрос 1
StaInRiper
@StaInRiper
Самоучка, любитель джаза
Скорее всего нельзя. Ведь на сайтах гос. структур и не только стоит защита. Т.е. даже смена юзер-агента не поможет. Увы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы