Как стать автором
Обновить

Получить выписки из ЕГРЮЛ на сайте ФНС, используя python

Время на прочтение3 мин
Количество просмотров17K
На сайте ФНС по адресу egrul.nalog.ru/index.html есть замечательный сервис проверки контрагентов или своих собственных обществ.

Суть проверки сводится к подаче запроса в ЕГРЮЛ (единый реестр фактов детальности юридических лиц) и получении тут же, онлайн, выписки из реестра.

Работа с сервисом не вызывает каких-либо затруднений: внес в поле ОГРН, нажал кнопку “Найти” и нажал кнопку “Скачать” ниже. Все, выписка получена.

Как здесь может помочь автоматизация? Очень просто.

Если ваш холдинг состоит из n-количества юридических лиц, то даже такая работа как копипастинг ОГРН в строку поиска сервиса может надоесть.

Избавимся от рутины и автоматизируем процесс подачи-скачивания выписок из ЕГРЮЛ!

В нашем случае программа будет “забирать” по одному ОГРН из заранее подготовленной таблицы excel, вносить значение в строку сервиса, нажимать необходимые кнопки.

В идеале работа программы будет выглядеть так:


Приступим.

Для начала подготовим таблицу excel, куда внесем ОГРН, по которым мы будем работать, в столбик:



Количество ОГРН не имеет значения (можно хоть весь ЕГРЮЛ скачать), главное чтобы они все были в столбце А.

Назовем файл выпискиЕГРЮЛ.xlsx и сохраним в рабочей директории python.

Теперь создадим сам файл с программой – egrul.py.

Первые строки программы, как обычно, начинаются с импорта необходимых модулей, далее мы выбираем браузер (в моем случае Chrome) и “заходим” на сайт:


from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import openpyxl
browser = webdriver.Firefox()
#browser = webdriver.Chrome()
time.sleep (5) # долго грузится - делаем задержку
browser.get ('https://egrul.nalog.ru/')


Далее мы запускаем цикл по всем ОГРН в таблице excel:


for x in range (2,187):    # 2 - A2 ячейка, 187 - A186 ячейка.  
        wb = openpyxl.load_workbook('выпискиЕГРЮЛ.xlsx')
        #sheet=wb.get_active_sheet()
        sheet=wb.get_sheet_by_name('Лист1')
        a = tuple (str(sheet.cell(row=x, column=1).value).strip()) # получаем кортеж из ОГРН в ячейке A2        
        act = browser.find_element_by_id('query')
        act.click()
        time.sleep (1)
        # вводим посимвольно в строку ОГРН, т.к. ввод сразу всего ОГРН не корректно обрабатывается
        i=0
        for i in range (13):
                act.send_keys(a[i])
                #time.sleep (0.1)
                i+=1
        act = browser.find_element_by_css_selector('.btn-search')
        time.sleep (0.5)
        act.click()
        time.sleep (4)
        act = browser.find_element_by_css_selector('button.btn-with-icon:nth-child(2)')
        time.sleep (0.5)
        act.click()
        time.sleep (4)
        act = browser.find_element_by_id('query')
        act.click() 
        #удаляем старый ОГРН
        i=0
        for i in range (13):
               act.send_keys (Keys.BACK_SPACE)                       
               i+=1           
        
x += 1
browser.quit()


Здесь надо обратить внимание на значения x вначале цикла:



2- это начальная ячейка с ОГРН (стартовая), которая соответствует A2 в excel таблице. Конечная ячейка будет A186, хотя в цикле указана цифра 187.

Это надо иметь ввиду, чтобы все ОГРН были обработаны и последнее значение не потерялось.
Между подачами запросов в ЕГРЮЛ программа выдерживает паузу в 30 секунд. Это может показаться недопустимо долго и этот период захочется сократить. Это можно сделать, поменяв значение в строке time.sleep(30) на, например, time.sleep(10). Однако в данном случае можно попасть под санкции сервиса ФНС и получить капчу. Данную капчу можно обойти, но это тема отдельного поста. А в этой программе лучше оставить задержку между подачами запросов в 30 секунд и пойти спокойно пить чай, пока программа за вас работает.

Ссылка на старый вариант программы – здесь.

Ссылка на тестовую таблицу excel – здесь.

*Текст программы актуализирован на 09.2020г.
Теги:
Хабы:
Всего голосов 13: ↑12 и ↓1+11
Комментарии23

Публикации

Истории

Работа

Python разработчик
136 вакансий
Data Scientist
61 вакансия

Ближайшие события