No es el primer conocido del portal de Rosreestr
Cualquier abogado ha hecho una solicitud a Rosreestr (Servicio Federal de Registro Estatal, Catastro y Cartografía). Los momentos en que para una solicitud era necesario correr a la sucursal de Rosreestr y presentar una solicitud en papel son cosa del pasado. Rosreestr ha lanzado varios servicios en línea que puede usar sin salir de su hogar. Estos servicios incluyen una solicitud de extracto del Registro Estatal Unificado de Bienes Raíces. Sitio oficial para comenzar.
Todos los que ya han logrado trabajar con el sitio saben que para recibir un extracto de la USRN, que contendrá información no solo sobre las características generales de la instalación, sino también sobre el titular de los derechos de autor de esta instalación, es necesario ir a la cuenta personal de Rosreestr.
Quizás esta sea una manera conveniente de obtener una o más declaraciones. Sin embargo, ¿qué hacer si necesita un paquete de extractos de USRN? Suponga que trabaja con bienes inmuebles o que posee una cantidad de objetos, cuyo número total es más de 10. Como regla general, debe recibir un extracto de la USRN al menos 1 vez al año para poder responder rápidamente en el plano legal a cambios indeseables en el Registro Federal si ocurren además del suyo. la voluntad
Puede enviar solicitudes manualmente a través de su cuenta personal, o puede usar la API de Rosreestr. La primera opción es extremadamente agotadora. Además del hecho de que el servicio en línea de Rosreestra funciona muy lentamente con bloqueos constantes, el usuario común también está invitado a enviar un arsenal de campos para cada objeto cuando envíe cada solicitud. Por ejemplo, una solicitud de una parcela de tierra:
Es decir, para encontrar información sobre el objeto y obtener un extracto físico. ¡la persona ya debe conocer todas las características del objeto! Y cada vez que solicite información, debe completar todos los campos. Qué decir es muy inconveniente. Gracias por al menos proporcionar que la tierra se puede medir en milímetros cuadrados.
La segunda opción para obtener extractos de la USRN es la API de Rosreestr. Api es un conjunto de instrucciones del programa, según el cual su parte de software y parte de Rosreestr intercambian información sin su participación. Una cosa conveniente si todo funciona correctamente. Y uno podría terminar.
Sin embargo, si mira la página donde Rosreestr explica cómo implementar una API conveniente, se siente incómodo.
Aquí se publica un documento con una descripción:
rosreestr.ru/wps/portal/cc_ib_documents?documentId=1521Solo toma 19 páginas, pero está escrito en lenguaje técnico y sugiere que no podemos prescindir de una firma digital. En general, durante mucho tiempo, es incomprensible e inconveniente. Vamos por un camino más corto.
Cuando trabajamos con el sitio colgante de Rosreestr, necesitamos comprender una herramienta de Python como las expectativas. La herramienta más adecuada para trabajar con este sitio, al menos en la etapa actual de desarrollo de este servicio Rosreestra.
Cuando una página se carga lentamente cargada en un navegador, los elementos en esta página pueden aparecer en diferentes intervalos de tiempo (o no aparecer en absoluto). Esto dificulta la búsqueda de elementos; periódicamente se genera una excepción ElementNotVisibleException o NoSuchElement. Usando expectativas, podemos resolver este problema.
La espera proporciona un cierto intervalo de tiempo entre las acciones realizadas: la búsqueda de un elemento o cualquier otra operación con el elemento.
Como utilizamos el módulo de selenio en nuestro trabajo, trabajaremos con lo que ofrece. Selenium ofrece dos tipos de expectativas: implícitas y explícitas.
La espera explícita es el código mediante el cual determina qué condición debe ocurrir para que se ejecute más código. Anteriormente usamos time.sleep (), que establece el tiempo de espera exacto. Pero esta opción no es del todo exitosa. La desventaja es que si no adivina el tiempo de inactividad (suspensión), el programa se bloqueará. Existen métodos más convenientes que pueden ayudarlo a escribir código que espera todo lo que necesita.
Estamos escribiendo un programa para trabajar con Rosreestr en línea.
Pasemos a nuestro programa.
Su esencia es que al ingresar al sitio web de Rosreestr, ella inicia sesión a través de la cuenta personal de una persona física. personas y además comenzaron a presentar de forma independiente solicitudes de extractos de la USRN. Nuestro programa recibirá datos para solicitudes de un archivo de Excel (dónde estaría sin él). Una advertencia. Al enviar una solicitud, el sitio web de Rosreestr tiene un campo con la dirección del objeto. Habrá dificultades con él, ya que las direcciones en Rosreestr se abren de una manera especial. Esto deberá tenerse en cuenta en el programa.
Empecemos
Antes de comenzar, prepare una tabla de Excel con los datos de origen en el siguiente formato:
Número-nombre del titular del copyright-dirección de la propiedad-tipo de propiedad-número catastral-área. Previa solicitud, necesitaremos todos los campos de la tabla, excepto "número" y "nombre del titular de los derechos de autor".
Ahora cree un nuevo archivo de Python: rosreestr.py. E importamos los módulos necesarios:
import webbrowser,time from selenium import webdriver import csv from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import NoSuchElementException import openpyxl
Abra el archivo de Excel con datos sobre bienes inmuebles:
wb = openpyxl.load_workbook('activ2.xlsx') sheet=wb.get_active_sheet()
Vamos a la página web de Rosreestr. Dado que la entrada al sitio en sí ya puede estar retrasada, debe establecer una expectativa:
browser = webdriver.Firefox() browser.get ('https://rosreestr.ru/') time.sleep(5)
Aquí puedes dejar solo el tiempo. Duerme 5 segundos. Pero mejor, usando las expectativas, escriba así:
browser.implicitly_wait(40)
Ahora debemos esperar a que aparezca el botón en su cuenta personal y hacer clic en él:
act = browser.find_element_by_css_selector('#top_panel > a:nth-child(4)') act.click()
Dado que el registro en su cuenta personal se realiza a través del portal de Servicios del Estado, el sitio redirige a los servicios del Estado y esto también ocurre con retraso, considere esto:
browser.implicitly_wait(40) act = browser.find_element_by_id('mobileOrEmail') act.click()
Ahora el programa nos autorizará en el sitio web del Servicio Estatal ingresando un nombre de usuario y contraseña (en lugar de un nombre de usuario y contraseña, ingrese sus datos):
i=0 for i in '@mail.ru': act.send_keys(i) time.sleep (0.1) act = browser.find_element_by_id('password') act.click() i=0 for i in '': act.send_keys(i) time.sleep (0.1) act = browser.find_element_by_id('loginByPwdButton') act.click()
Después de que el programa ha presionado el botón enter, la siguiente ventana puede aparecer antes de la autorización:
Aquí debe seleccionar el selector CSS nat. caras ¿Recuerdas cómo hacerlo? Haga clic derecho en el icono Persona privada ... - explore el elemento:
Y copie el selector CSS:
Lo agregaremos a nuestro programa:
act = browser.find_element_by_css_selector('tr.not-border:nth-child(1) > td:nth-child(2) > div:nth-child(2)') act.click()
Ahora que hemos iniciado sesión, el navegador nos redirigirá desde el sitio web de los Servicios del Estado al sitio web de Rosreestr. Allí, nuestro programa debe hacer clic en el elemento "Solicitud de información sobre bienes inmuebles y (o) sus propietarios":
Ingresaremos el código apropiado:
act = browser.find_element_by_css_selector('div.services-item:nth-child(5) > div:nth-child(1) > span:nth-child(2)') act.click() act = browser.find_element_by_css_selector('div.services-item:nth-child(5) > table:nth-child(2) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2) > a:nth-child(1)') act.click()
Llegamos a la página de inicio de envío de una solicitud, donde se esperan 5 pasos de nosotros:
Para ir al segundo paso, debe verificar la página y hacer clic en siguiente. Denota esto en código:
act = browser.find_element_by_class_name('PGU-LabelIcon') act.click() act = browser.find_element_by_css_selector('#__nextStep') act.click()
Estamos en el segundo paso del sitio web de Rosreestr. Aquí es necesario completar la categoría de campo del solicitante, todos los demás datos se obtienen automáticamente del servicio público. Luego haga clic en "Siguiente":
En código, se ve así:
act = browser.find_element_by_css_selector('#Form7\.step2\.specialDeclarantKind\.code > div:nth-child(2) > div:nth-child(1)') act.click() act = browser.find_element_by_css_selector('.opened > div:nth-child(3) > div:nth-child(1) > div:nth-child(2)') act.click() act = browser.find_element_by_css_selector('#__nextStep') act.click()
Si ejecutamos nuestro programa, lo más probable es que recibamos un error:
Manejamos este error de la siguiente manera:
try: act = browser.find_element_by_class_name('PGU-LabelIcon') except: browser.refresh() time.sleep (40) act = browser.find_element_by_class_name('PGU-LabelIcon')
Ahora, si surge una situación en la que la página no se carga, el programa actualizará el navegador e intentará nuevamente hacer clic en el icono deseado. Desafortunadamente, las expectativas no funcionan aquí, y debe usar el viejo y probado time.sleep ().
Estamos en el tercer paso y es el más laborioso:
Es necesario completar todos los campos con el signo "*".
Comencemos ingresando el objeto:
n=1 i=sheet['B'+str(n)].value
Aquí comenzamos con una celda en Excel, donde tenemos escrito el nombre del objeto. Si, por ejemplo, se ingresa "Terreno" en la celda, entonces el programa selecciona el elemento apropiado usando el selector css. Todo sucede también con otros tipos de objetos en la celda: el programa los procesa.
A continuación, hacemos clic en los selectores css del número catastral, el tipo de declaración y la dirección de los objetos, estos selectores son los mismos para todos los objetos:
Ahora necesita conducir la dirección:
for i in sheet['D'+str(n)].value: act.send_keys(i) time.sleep (0.1) print(sheet['D'+str(n)].value) i=input(" eneter enter: ") act = browser.find_element_by_css_selector('a.button-custom:nth-child(2)') act.click()
La dirección se toma de la columna C de la tabla de Excel. Hay una pausa en forma de reactivación de las acciones del usuario. Esto se debe al hecho de que la dirección en Rosreestr puede diferir de la dirección que tiene y lo más probable es que sea. Por lo tanto, el programa, al ingresar la dirección de la tabla en el sitio, esperará que el usuario presione enter en el intérprete para continuar.
Los pasos restantes en el portal de Rosreestr son los menos notables, allí el programa simplemente hace clic en los botones del portal "Siguiente" y envía la solicitud al Rosreestr:
Al final del programa, agregue una actualización del navegador:
browser.refresh() time.sleep (2)
Si el programa funcionó correctamente, solo queda comenzar un ciclo a través de todas las celdas con objetos en nuestro archivo de Excel. Para hacer esto, agregue al comienzo del bloque antes de
i=sheet['B'+str(n)].value
:
while True: if n<36:
y al final:
n+=1
, donde n es el número de bienes inmuebles en la tabla de Excel.
El texto completo del programa se puede ver
aquí .