Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

А почему код картинкой? В Хабр можно легко вставить код с подсветкой.
import requests, json, os, datetime, traceback; from time import sleep
inn = 6724005460 #инн из воздуха
s = requests.Session()
r = s.get("https://egrul.nalog.ru/index.html",
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
}
)
req = requests.Request(
'POST',
'https://egrul.nalog.ru/',
data=b'vyp3CaptchaToken=&page=&query='+bytes(inn)+'®ion=&PreventChromeAutocomplete=', # хабр почему то заменяет rеg в слове rеgion (буква е заменена на русскую) на знак ®, магия
headers = {
"Host": "egrul.nalog.ru",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://egrul.nalog.ru/index.html",
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest"
}
)
r = s.prepare_request(req)
r = s.send(r)
#print(r.text)
t = json.loads(r.text)['t']
sleep(0.5)
r = s.get("https://egrul.nalog.ru/search-result/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
#print(r.text)
jsn = json.loads(r.text)
try:
while True:
if jsn['status'] != 'wait': break
sleep(0.2)
except Exception:
pass
try:
item = (jsn["rows"])[0]
if str(item['tot']) != '0':
if len(item['n']) < 50: name = str(item['n'])
else: name = str(item['i'])
name = name.replace('"',"'").replace('\\','⧵').replace('/','⁄').replace('|','¦').replace(':',';').replace('*','✱').replace('?','').replace('<','«').replace('>','»')
try:
os.mkdir(name)
except Exception:
pass
name = name + ' '+str(datetime.datetime.strftime(datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=3))),'%x %X %Z')).replace('/','.').replace(':','-')
os.mkdir(name)
f = open(name+'\\'+name+'.txt','w+',encoding='utf-8')
f.write('по состоянию на ' + str(datetime.datetime.strftime(datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=3))),'%x %X %Z')).replace('/','.')+'\n'+str(item))
f.close()
t = item['t']
r = s.get("https://egrul.nalog.ru/vyp-request/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
sleep(0.5)
while True:
r = s.get("https://egrul.nalog.ru/vyp-status/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
st = json.loads(r.text)['status']
if st == 'ready': break
sleep(0.5)
r = s.get("https://egrul.nalog.ru/vyp-download/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
#print(r.text)
f = open(name+'\\'+name+' выписка.pdf','wb+')
f.write(r.content)
f.close()
except Exception as e:
print(e)
traceback.print_exc()
passсравните теперь длину кода;
requests, которые здесь использованы, к сожалению отваливаются из-за капч в дальнейшем;
только один ИНН?
import requests, json, os, datetime, traceback, bs4, webbrowser; from time import sleep;
querys = ['7707510023', 'ООО Яндекс', '1057749528100']
s = requests.Session()
n = 0
for item in querys:
query = querys[n]
r = s.get("https://egrul.nalog.ru/index.html",
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
}
)
req = requests.Request(
'POST',
'https://egrul.nalog.ru/',
data=b'vyp3CaptchaToken=&page=&query='+query.encode()+b'®ion=&PreventChromeAutocomplete=',
headers = {
"Host": "egrul.nalog.ru",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://egrul.nalog.ru/index.html",
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest"
}
)
r = s.prepare_request(req)
r = s.send(r)
#print('31',r.text)
item = json.loads(r.text)
try:
if item["ERRORS"] != '' and (item["ERRORS"])["captchaSearch"] != '':
while True:
r = s.get('https://egrul.nalog.ru/captcha-dialog.html',
headers = {
"Host": "egrul.nalog.ru",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html",
"Pragma": "no-cache",
"Cache-Control": "no-cache"
})
b = bs4.BeautifulSoup(r.content.decode(),features="lxml").find('div',class_='field-data').find('img').get('src')
#print('\r\n\r\nb =',b,'\r\n\r\n')
webbrowser.open('https://egrul.nalog.ru' + b)
ct = b.split('?a=')[1].split('&')[0]
captcha = input('Введите капчу: ')
#print('ct=',ct)
r = requests.Request(
'POST',
'https://egrul.nalog.ru/captcha-proc.json',
data=b'captcha='+captcha.encode()+b'&captchaToken='+ct.encode(),
headers = {
"Host": "egrul.nalog.ru",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
r = s.prepare_request(req)
r = s.send(r)
#print('captcha r', r.text)
item = json.loads(r.text)
try:
tr = False
if item["ERRORS"] != '':
tr = True
except Exception as e:
print(e)
pass
if tr == False: break
except Exception as e:
#print(e)
pass
t = json.loads(r.text)['t']
sleep(0.5)
r = s.get("https://egrul.nalog.ru/search-result/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
#print('95', r.text)
jsn = json.loads(r.text)
try:
while True:
if jsn['status'] != 'wait': break
sleep(0.2)
except Exception:
pass
try:
item = (jsn["rows"])[0]
itemParse = ''
itemParse += item['n'] + '\n'
itemParse += item['g'] + '\n'
itemParse += 'Адрес: ' + item['a']+'\n'
itemParse += 'ИНН: ' + item['i']+'\n'
itemParse += 'ОГРН: ' + item['o']+'\n'
itemParse += 'КПП: ' + item['p']+'\n'
itemParse += 'Дата регистрации: ' + item['r']+'\n'
try:
itemParse += 'ДАТА ПРЕКРАЩЕНИЯ ДЕЯТЕЛЬНОСТИ: ' + item['e']+'\n'
except Exception:
pass
if str(item['tot']) != '0':
if len(item['n']) < 50: name = str(item['n'])
else: name = str(item['i'])
name = name.replace('"',"'").replace('\\','⧵').replace('/','⁄').replace('|','¦').replace(':',';').replace('*','✱').replace('?','').replace('<','«').replace('>','»')
try:
os.mkdir(name)
except Exception:
pass
name = name + ' '+str(datetime.datetime.strftime(datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=3))),'%x %X %Z')).replace('/','.').replace(':','-')
os.mkdir(name)
f = open(name+'\\'+name+'.txt','w+',encoding='utf-8')
f.write('по состоянию на ' + str(datetime.datetime.strftime(datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=3))),'%x %X %Z')).replace('/','.')+'\n'+str(itemParse))
f.close()
t = item['t']
r = s.get("https://egrul.nalog.ru/vyp-request/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
sleep(0.5)
while True:
r = s.get("https://egrul.nalog.ru/vyp-status/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
st = json.loads(r.text)['status']
if st == 'ready': break
sleep(0.5)
r = s.get("https://egrul.nalog.ru/vyp-download/"+str(t),
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
"Referer": "https://egrul.nalog.ru/index.html"
}
)
#print(r.text)
f = open(name+'\\'+name+' выписка.pdf','wb+')
f.write(r.content)
f.close()
n += 1
sleep(5)
except Exception as e:
#print(e)
traceback.print_exc()
passitemParse += item['n'] + '\n'
try:
itemParse += item['g'] + '\n'
except Exception:
pass
try:
itemParse += 'Адрес: ' + item['a']+'\n'
except Exception:
pass
itemParse += 'ИНН: ' + item['i']+'\n'
itemParse += 'ОГРН: ' + item['o']+'\n'
try:
itemParse += 'КПП: ' + item['p']+'\n'
except Exception:
pass
itemParse += 'Дата регистрации: ' + item['r']+'\n'
Получить выписки из ЕГРЮЛ на сайте ФНС, используя python