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

Получить выписку из Росреестра через ФГИС ЕГРН и python. Часть 1

Время на прочтение4 мин
Количество просмотров15K

Дешевые выписки, что может быть лучше ?


У Романа Андреевича Карцева есть неплохой монолог про раков вчерашних по 5 руб. и сегодняшних по 3-и. Будем считать, что прошлый пост был про раков по 5 руб. Так как выписка из ЕГРН по 300 руб., хоть и автоматизированная не каждому по карману, если речь идет о массовых запросах.

В этот раз рассмотрим как получить тот же результат, потратив 400 руб. за 100 выписок из ЕГРН. Наша программа будет выполнять нехитрые манипуляции, заходить на сайт, заполнять за нас все необходимые поля при подаче запроса в Росреестр. Как и в прошлый раз мы не будет использовать api Росреестра.

Примерно так это будет выглядеть:


Портал Росреестра предполагает, что при работе с ФГИС вы получите на портале ключ — символьно-цифровую строку. Данный ключ вводится одноразово при работе с ФГИС для входа в рабочую область и содержится в разделе «Мои ключи»:



Будем считать, что ключ вы получили самостоятельно. Процедура его получения не сложная.
Теперь напишем программу, которая автоматизирует подачу запросов.

Начнем с простой программы, которая подаст один запрос в систему.

Запросы в ЕГРН – версия 2.0


Импортируем модули:

import webbrowser,time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import os

Заходим на сайт ФГИС ЕГРН:

browser = webdriver.Firefox()
browser.implicitly_wait(40)
browser.get ('https://rosreestr.ru/wps/portal/p/cc_present/ir_egrn')

Нас встретит дружелюбное окно для ввода ключа РОсреестра, о котором шла речь выше:



Определяем CSS-селектор окна, куда надо внести ключ, вводим свой ключ и заходим во ФГИС ЕГРН, нажав кнопку «Войти»:

act = browser.find_element_by_css_selector('.v-panel-content > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > input:nth-child(1)')
for i in '---------':
	act.send_keys(i)
time.sleep(2)
act = browser.find_element_by_css_selector('.v-panel-content > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > div:nth-child(1) > input:nth-child(1)')
for i in '----':
	act.send_keys(i)
time.sleep(2)
act = browser.find_element_by_css_selector('.v-panel-content > div:nth-child(1) > div:nth-child(1) > div:nth-child(5) > div:nth-child(1) > input:nth-child(1)')	
for i in '----':
	act.send_keys(i)
time.sleep(2)
act = browser.find_element_by_css_selector('.v-panel-content > div:nth-child(1) > div:nth-child(1) > div:nth-child(7) > div:nth-child(1) > input:nth-child(1)')                                         
for i in '----':
	act.send_keys(i)
time.sleep(2)
act = browser.find_element_by_css_selector('.v-panel-content > div:nth-child(1) > div:nth-child(1) > div:nth-child(9) > div:nth-child(1) > input:nth-child(1)')                                           
for i in '--------':
	act.send_keys(i)
time.sleep(2)
act = browser.find_element_by_css_selector('.v-button-normalButton > span:nth-child(1) > span:nth-child(1)')
act.click()
time.sleep(2)

Здесь надо вписать в поля с символами "-" части своего ключа, так как программа будет его вносить на сайте частями, перепрыгивая по полям.

Если все отработает успешно, то мы попадем в окно системы:



Так как мы будем искать объекты недвижимости, программа должна нажать соответственно «Поиск объектов недвижимости»:

act = browser.find_element_by_css_selector('.v-gridlayout-margin > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(2)')
act.click()
time.sleep(1)

Теперь в соответствующие поля мы введем кадастровый номер и укажем область для поиска. Без внесения данных об области, перейти к следующему шагу нельзя:

act = browser.find_element_by_css_selector('.v-verticallayout-searchFormOuter > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > input:nth-child(1)')
act.click()
for i in '66:36:2801001:223':
	act.send_keys(i)
act = browser.find_element_by_css_selector('.v-filterselect-error > input:nth-child(1)')
act.click()
for i in 'Свердловская область':
	act.send_keys(i)
time.sleep(5)
act.send_keys(Keys.ENTER)
act = browser.find_element_by_css_selector('.v-horizontallayout-borderTop > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1)')
act.click()

Наше следующее окно:



Здесь необходимо нажать на сформированный внизу страницы объект, сделаем это:

act = browser.find_element_by_css_selector('.v-table-table')
act.click()

И мы попадаем на финальный шаг, где нас снова встречает капча. Также нам надо нажать на кнопку отправить запрос:



Введем капчу с помощью интерпретатора вручную. Пока такой способ «обхода» капчи используем:

act = browser.find_element_by_css_selector('.v-textfield')
act.click()
i=input("Введите капчу здесь и нажмите ENTER: ")
for a in i:
        act.send_keys(a)
        time.sleep(1)
act.send_keys(Keys.ENTER)

*То есть программа будет ждать пока пользователь руками введет капчу в окне с программой и нажмет «enter».

И, далее, программа сама отправляет запрос во ФГИС ЕГРН:

act = browser.find_element_by_css_selector('.v-horizontallayout-blockNotTall > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1)')
act.click()
time.sleep(3)

И нажимает на «Продолжить работу»:



Мы успешно подали запрос по одному объекту.

Проверить то, что запрос действительно успешно направлен во ФГИС можно в разделе «Мои заявки», о чем нам и сообщают.

Теперь нам надо запустить программный цикл по всем объектам в таблице excel и… как-то победить капчу. Впрочем, это совсем уже другая история. Хотя подсказка осталась в коде программы, залитой на обменник.

Скачать программу – здесь.
Теги:
Хабы:
Всего голосов 10: ↑10 и ↓0+10
Комментарии8

Публикации

Истории

Работа

Python разработчик
122 вакансии
Data Scientist
75 вакансий

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

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань