Получаем выписки из Единого государственного реестра недвижимости (ЕГРН), минуя api. Selenium vs rosreestr.ru. Часть 1.

Знакомство с порталом Росреестра.

   Любой юрист когда-либо обращался с запросом в Росреестр (Федеральная служба государственной регистрации, кадастра и картографии). Времена, когда для запроса надо было бежать в отделение Росреестра и подавать запрос на бумаге уходят в прошлое. Росреестр запустил несколько онлайн сервисов, которые можно использовать не выходя из дома. К этим сервисам относится и запрос выписки из Единого государственного реестра недвижимости. Официальный сайт для начала работы — https://rosreestr.ru/site/.

   Всем, кто уже успел поработать с сайтом, известно, что для получения выписки из ЕГРН в которой будет содержаться информация не только об общих характеристиках объекта, но и о правообладателе данного объекта, необходимо зайти в личный кабинет Росреестра.

   Возможно, это удобный способ получения одной или нескольких выписок. Однако, что делать, если необходим пакет выписок ЕГРН ? Допустим, вы работаете с недвижимостью или владеете рядом объектов, общее число которых более 10. По общему правилу получать выписку из ЕГРН надо не реже 1 раза в год, чтобы успеть вовремя отреагировать в юридической плоскости на нежелательные изменения в Росреестре, если они возникнут помимо вашей воли. Можно вручную подавать запросы через личный кабинет, а можно использовать api Росреестра. Первый вариант крайне утомителен. Помимо того, что сам онлайн сервис Росреестра работает весьма неторопливо с постоянными зависаниями, так еще обычному пользователю предлагается при подаче каждого запроса вводить целый арсенал полей по объекту. Вот, например, запрос по земельному участку:
clip_image002

То есть, чтобы узнать сведения об объекте и получить по нему выписку, физ. лицу надо уже знать все характеристики объекта! И каждый раз при запросе сведений необходимо заполнять все поля. Что сказать, очень неудобно. Спасибо, что хотя бы предусмотрели в поле “Единицы измерения” то, что земельный участок может измеряться в квадратных миллиметрах.

Api Росреестра не панацея.

   Второй вариант получения выписок из ЕГРН – api Росреестра. Api — это набор программных инструкций, по которому ваша программная часть и часть Росреестра обмениваются сведениями без вашего участия. Удобная вещь, если все работает правильно. И можно было бы закончить на этом данный пост.
Однако, если посмотреть на страницу, где Росреестр объясняет как внедрить удобное api, становится не по себе.
Документ с описанием размещен здесь — https://rosreestr.ru/wps/portal/cc_ib_documents?documentId=1521
Занимает всего лишь 19 страниц, но написан техническим языком и говорит о том, что без цифровой подписи нам не обойтись. Вообщем, долго, непонятно и неудобно.
Пойдем более коротким путем, используя python.
При работе с сайтом Росреестра нам понадобится понимание такого инструмента Python как ожидания. Самый подходящий инструмент для работы с этим сайтом, по крайнем мере на текущем этапе развития данного сервиса Росреестра.

   Когда страница медленно прогружается в браузере, элементы на этой странице могут появляться с различными временными интервалами (или не появляться вообще). Это затрудняет поиск элементов, периодически возникает исключение ElementNotVisibleException или NoSuchElement. Используя ожидания, мы можем решить эту проблему.
Ожидание дает некий временной интервал между произведенными действиями — поиске элемента или любой другой операции с элементом.
Так как мы используем в работе модуль selenium, то будем работать с тем, что он предлагает. Selenium предоставляет два типа ожиданий — неявное (implicit) и явное (explicit).

Ожидания в python.

  Явное ожидание — это код, которым вы определяете, какое условие должно произойти для того, чтобы дальнейший код исполнился. Ранее мы использовали time.sleep(), которое устанавливает точное время ожидания. Но этот вариант не совсем удачен. Минус его в том, что, если не угадать со временем простоя (sleep) программа вылетит. Существуют более удобные методы, которые помогут написать код, ожидающий ровно столько, сколько необходимо.

Вот пример:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as goal

driver = webdriver.Firefox()
driver.get(«https://rosreestr.ru/site/«)
try:
    element = WebDriverWait(driver,10).until(goal.presence_of_element_located((By.CSS_SELECTOR, «#top_panel > a:nth-child(4)»)))
finally:
    driver.quit()

   Этот код будет ждать 10 секунд до того, как отдаст исключение TimeoutException или если найдет элемент за эти 10 секунд, то вернет его. WebDriverWait по умолчанию вызывает ExpectedCondition каждые 500 миллисекунд до тех пор, пока не получит успешный return.

Неявное ожидание указывает WebDriver’у опрашивать определенное количество времени, когда пытается найти элемент или элементы, которые недоступны в тот момент. Значение по умолчанию равно 0.

from selenium import webdriver 
driver = webdriver.Firefox()driver.implicitly_wait(10) # seconds
driver.get(«https://rosreestr.ru/site/«)
act = driver.find_element_by_css_selector(«#top_panel > a:nth-child(4»)

В целом, явные и неявные ожидания схожи, и какие из них использовать выбирать вам. Я остановлюсь на втором варианте.


            

admin

Оставить отклик

Ваш адрес эл.почты не будет опубликован.