Não é o primeiro conhecido do portal Rosreestr
Qualquer advogado já fez um pedido à Rosreestr (Serviço Federal de Registro, Cadastro e Cartografia do Estado). Os horários em que para uma solicitação era necessário executar a filial do Rosreestr e registrar uma solicitação no papel são coisas do passado. A Rosreestr lançou vários serviços online que você pode usar sem sair de casa. Esses serviços incluem uma solicitação de extrato do Registro Estadual Unificado de Imóveis. Site
oficial para começar.
Todo mundo que já conseguiu trabalhar com o site sabe que, para receber um extrato da USRN, que conterá informações não apenas sobre as características gerais da instalação, mas também sobre o detentor dos direitos autorais dessa instalação, é necessário acessar a conta pessoal da Rosreestr.
Talvez seja uma maneira conveniente de obter uma ou mais declarações. No entanto, o que fazer se você precisar de um pacote de extratos do USRN? Suponha que você trabalhe com imóveis ou possua vários objetos, cujo número total seja superior a 10. Como regra geral, você precisa receber uma extração da USRN pelo menos 1 vez por ano para poder responder imediatamente no plano jurídico a alterações indesejadas no Registro Federal, se ocorrerem além do seu a vontade.
Você pode enviar solicitações manualmente por meio de sua conta pessoal ou usar a API do Rosreestr. A primeira opção é extremamente cansativa. Além do fato de o próprio serviço on-line da Rosreestra funcionar muito lentamente com travamentos constantes, o usuário comum também é convidado a enviar um arsenal de campos para o objeto ao enviar cada solicitação. Por exemplo, uma solicitação para um terreno:
Ou seja, para descobrir informações sobre o objeto e obter um extrato dele, físico. a pessoa já deve conhecer todas as características do objeto! E toda vez que você solicitar informações, você deve preencher todos os campos. O que dizer é muito inconveniente. Obrigado por pelo menos prever que a terra possa ser medida em milímetros quadrados.
A segunda opção para obter extratos do USRN é a API do Rosreestr. Api é um conjunto de instruções do programa, segundo as quais sua parte do software e parte da Rosreestr trocam informações sem a sua participação. Uma coisa conveniente se tudo funcionar corretamente. E pode-se terminar.
No entanto, se você olhar para a página em que o Rosreestr explica como implementar uma API conveniente, você se sentirá desconfortável.
Um documento com uma descrição é postado aqui -
rosreestr.ru/wps/portal/cc_ib_documents?documentId=1521Leva apenas 19 páginas, mas é escrito em linguagem técnica e sugere que não podemos prescindir de uma assinatura digital. Em geral, por um longo tempo, é incompreensível e inconveniente. Vamos por um caminho mais curto.
Ao trabalhar com o site suspenso do Rosreestr, precisamos entender as ferramentas Python como as expectativas. A ferramenta mais adequada para trabalhar com este site, pelo menos no estágio atual de desenvolvimento deste serviço, Rosreestra.
Quando a página está carregando lentamente no navegador, os elementos nesta página podem aparecer em diferentes intervalos de tempo (ou nem aparecer). Isso dificulta a localização de elementos; uma exceção ElementNotVisibleException ou NoSuchElement é lançada periodicamente. Usando as expectativas, podemos resolver esse problema.
Aguardar fornece um certo intervalo de tempo entre as ações executadas - a busca por um elemento ou qualquer outra operação com o elemento.
Como usamos o módulo de selênio em nosso trabalho, trabalharemos com o que ele oferece. O selênio fornece dois tipos de expectativas - implícitas e explícitas.
Espera explícita é o código pelo qual você determina qual condição deve ocorrer para que outro código seja executado. Anteriormente, usamos time.sleep (), que define o tempo limite exato. Mas essa opção não é totalmente bem-sucedida. A desvantagem disso é que, se você não adivinhar o tempo de inatividade (suspensão), o programa falhará. Existem métodos mais convenientes que podem ajudá-lo a escrever o código que espera o quanto você precisa.
Estamos escrevendo um programa para trabalhar com o Rosreestr online
Vamos seguir para o nosso programa.
Sua essência é que, ao entrar no site da Rosreestr, ela faz login através da conta pessoal de uma pessoa física. pessoas e, posteriormente, começaram a enviar pedidos de extratos da USRN de forma independente. Nosso programa receberá dados para solicitações de um arquivo do Excel (onde estaria sem ele). Uma ressalva. Ao enviar uma solicitação, o site da Rosreestr possui um campo com o endereço do objeto. Haverá dificuldades com isso, pois os endereços no Rosreestr são abertos de uma maneira especial. Isso terá que ser levado em consideração no programa.
Vamos começar.
Antes de começar, prepare uma tabela do Excel com os dados de origem no seguinte formato:
Número-nome do detentor dos direitos autorais - endereço da propriedade - tipo de propriedade - número cadastral - área. Mediante solicitação, precisaremos de todos os campos da tabela, exceto "número" e "nome do detentor dos direitos autorais".
Agora crie um novo arquivo python - rosreestr.py. E nós importamos os módulos necessários:
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 o arquivo do Excel com dados sobre imóveis:
wb = openpyxl.load_workbook('activ2.xlsx') sheet=wb.get_active_sheet()
Vamos ao site da Rosreestr. Como a entrada para o site em si já pode estar atrasada, é necessário definir uma expectativa:
browser = webdriver.Firefox() browser.get ('https://rosreestr.ru/') time.sleep(5)
Aqui você pode deixar apenas o tempo. Durma 5 segundos. Mas melhor, usando as expectativas, escreva assim:
browser.implicitly_wait(40)
Agora precisamos aguardar o botão aparecer na sua conta pessoal e clicar nele:
act = browser.find_element_by_css_selector('#top_panel > a:nth-child(4)') act.click()
Como o registro em sua conta pessoal é realizado através do portal de Serviços do Estado, o site é redirecionado para os serviços do Estado e isso também ocorre com atraso, considere o seguinte:
browser.implicitly_wait(40) act = browser.find_element_by_id('mobileOrEmail') act.click()
Agora, o programa nos autorizará no site do Serviço de Estado digitando um nome de usuário e senha (em vez de nome de usuário e senha, insira seus dados):
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()
Após o programa pressionar o botão Enter, a seguinte janela pode aparecer antes da autorização:
Aqui você precisa selecionar o seletor CSS nat. rostos. Lembra como fazer isso? Clique com o botão direito do mouse no ícone Pessoa privada ... - explore o elemento:
E copie o seletor CSS:
Vamos adicioná-lo ao nosso programa:
act = browser.find_element_by_css_selector('tr.not-border:nth-child(1) > td:nth-child(2) > div:nth-child(2)') act.click()
Agora que estamos logados, o navegador nos redirecionará do site de Serviços do Estado para o site da Rosreestr. Lá, nosso programa deve clicar no item "Solicitação de informações sobre imóveis e (ou) seus proprietários":
Vamos inserir o código apropriado:
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()
Chegamos à página inicial de envio de uma solicitação, onde são esperadas 5 etapas:
Para ir para o segundo passo, você precisa verificar a página e clicar em Avançar. Indique isso no código:
act = browser.find_element_by_class_name('PGU-LabelIcon') act.click() act = browser.find_element_by_css_selector('#__nextStep') act.click()
Estamos na 2ª etapa do site da Rosreestr. Aqui é necessário preencher a categoria de campo do candidato, todos os outros dados são automaticamente retirados do serviço público. Depois clique em "Next":
No código, fica assim:
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()
Se executarmos o nosso programa, provavelmente obteremos um erro:
Lidamos com esse erro da seguinte maneira:
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')
Agora, se surgir uma situação em que a página não carrega, o programa atualizará o navegador e tentará novamente clicar no ícone desejado. Infelizmente, as expectativas não funcionam aqui e você deve usar o antigo e comprovado time.sleep ().
Estamos na terceira etapa e é a mais trabalhosa:
É necessário preencher todos os campos com o sinal "*".
Vamos começar inserindo o objeto:
n=1 i=sheet['B'+str(n)].value
Aqui começamos com uma célula no excel, onde temos o nome do objeto escrito. Se, por exemplo, “Land plot” for inserido na célula, o programa seleciona o item apropriado usando o seletor css. Tudo também acontece com outros tipos de objetos na célula - o programa os processa.
Em seguida, clicamos nos seletores css do número cadastral, tipo de instrução e endereço dos objetos, esses seletores são iguais para todos os objetos:
Agora você precisa dirigir o endereço:
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()
O endereço é obtido da coluna C da tabela do Excel. Há uma pausa na forma de um reavivamento das ações do usuário. Isso se deve ao fato de o endereço no Rosreestr poder diferir do endereço que você possui e provavelmente é. Portanto, o programa, inserindo o endereço da tabela no site, espera que o usuário pressione enter no intérprete para continuar mais.
As etapas restantes no portal do Rosreestr são as menos visíveis; aí, o programa simplesmente clica nos botões no portal "Avançar" e envia uma solicitação já ao Rosreestr:
No final do programa, adicione uma atualização do navegador:
browser.refresh() time.sleep (2)
Se o programa funcionou corretamente, resta apenas iniciar um ciclo através de todas as células com objetos em nosso arquivo do Excel. Para fazer isso, adicione no início do bloco antes de
i=sheet['B'+str(n)].value
while True: if n<36:
e no final:
n+=1
, em que n é o número de imóveis na tabela do Excel.
O texto completo do programa pode ser visto
aqui .