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

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


    У Романа Андреевича Карцева есть неплохой монолог про раков вчерашних по 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 и… как-то победить капчу. Впрочем, это совсем уже другая история. Хотя подсказка осталась в коде программы, залитой на обменник.

    Скачать программу – здесь.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 7

      0

      400 руб. = 100 выписок для физ. лица
      800 руб. = 100 выписок для юр. лица

        0
        все, верно. поправил.
        0
        1. regulation.gov.ru/projects?#npa=90942 — минимальный тариф на доступ к ФГИС ЕГРН станет 2,25 млн.₽ (!) Это за 50 000 выписок, меньше нельзя. Даже для тестирования, никак. Но и без этого рост кратный.

        2. regulation.gov.ru/projects?#npa=88067 — любая информационная система, использующая данные из ЕГРН, де факто становится незаконной.

        P.S. Безотносительно описанного выше апокалипсиса — у ФГИС ЕГРН же (пока ещё) API есть, зачем парсить сайт и обходить капчу?
          0

          Апи требует какого-то нереального криптошифрования без объяснения подробностей...

            0
            На самом деле подробностей там хоть отбавляй. Ранее упоминал этот документ rosreestr.ru/wps/portal/cc_ib_documents?documentId=1521
            Очень надеюсь, также, что вышеуказанные тарифы и штраф не пойдут в работу. Хотя, согласитесь, оригинальный метод законодателя снизить нагрузку на сервера Росреестра — все запретить.
            0
            Конечно интересно, но полезность этого околонулевая. Через браузер намного удобнее + если дизайн поменяют на сайте росреестра, то скрипт сломается
              0
              Так программа и делает все наглядно, через браузер. Все трудозатраты — вбить капчу и все.

            Only users with full accounts can post comments. Log in, please.