Declarações baratas, o que poderia ser melhor?
Roman Andreyevich Kartsev tem um
bom monólogo sobre o
lagostim de ontem por 5 rublos. e hoje para 3. Assumimos que o último post foi sobre lagostins por 5 rublos. Como o extrato da USRN é de 300 rublos cada, embora nem todos possam pagar, se se trata de pedidos em massa.
Desta vez, considere como obter o mesmo resultado gastando 400 rublos. por 100 extratos da USRN. Nosso programa realizará manipulações simples, acessará o site, preencherá todos os campos necessários ao enviar uma solicitação à Rosreestr. Como da última vez, não usaremos a API do Rosreestr.
Será algo parecido com isto:
O portal Rosreestra assume que, ao trabalhar com o FSIS, você receberá uma chave no portal - uma sequência digital de caracteres. Essa chave é inserida uma vez ao trabalhar com o Serviço de Informações do Estado Federal para entrar na área de trabalho e está contida na seção Minhas Chaves:

Assumimos que você mesmo recebeu a chave. O procedimento para obtê-lo não é complicado.
Agora vamos escrever um programa que automatiza o envio de solicitações.
Vamos começar com um programa simples que enviará uma solicitação ao sistema.
Pedidos no USRN - versão 2.0
Módulos de importação:
import webbrowser,time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import NoSuchElementException import os
Vamos ao site do FSIS USRN:
browser = webdriver.Firefox() browser.implicitly_wait(40) browser.get ('https://rosreestr.ru/wps/portal/p/cc_present/ir_egrn')
Seremos recebidos por uma janela amigável para inserir a chave do Rosreestr, que foi discutida acima:

Determinamos o seletor de CSS da janela em que você deseja inserir a chave, insira sua chave e vá para o FSIS USR clicando no botão "Login":
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)
Aqui você precisa inserir partes da sua chave nos campos com símbolos "-", pois o programa a inserirá no site em partes, saltando sobre os campos.
Se tudo der certo, entraremos na janela do sistema:

Como procuraremos imóveis, o programa deve clicar em "Pesquisar imóveis", respectivamente:
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)
Agora vamos inserir o número cadastral nos campos apropriados e indicar a área a ser pesquisada. Sem inserir dados na área, você não pode prosseguir para a próxima etapa:
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()
Nossa próxima janela:

Aqui você precisa clicar no objeto formado na parte inferior da página, faça o seguinte:
act = browser.find_element_by_css_selector('.v-table-table') act.click()
E chegamos à etapa final, onde somos novamente recebidos pelo captcha. Também precisamos clicar no botão enviar solicitação:

Digite o captcha usando o intérprete manualmente. Até agora, usamos este método de "contornar" o captcha:
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)
* Ou seja, o programa aguardará até que o usuário entre manualmente no captcha na janela com o programa e pressione “enter”.
Além disso, o próprio programa envia uma solicitação ao Registro de Inspeção Estadual da Propriedade Federal:
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)
E clica em "Continuar o trabalho":

Enviamos com sucesso uma solicitação para um objeto.
Você pode verificar se a solicitação foi realmente enviada com êxito ao FSIS na seção "Meus aplicativos", sobre a qual somos informados.
Agora precisamos iniciar o ciclo do programa para todos os objetos na tabela do Excel e ... de alguma forma, derrotar o captcha. No entanto, esta é uma história completamente diferente. Embora a dica permaneça no código do programa, carregada no trocador.
Faça o download do programa -
aqui .