通过FSIS USRN和python获取Rosreestr的摘录。 第一部分

廉价的陈述,还有什么会更好?


罗曼·安德烈耶维奇·卡采夫(Roman Andreyevich Kartsev) 昨天的小龙虾有5卢布的独白 。 今天是3。 我们假设最后一个帖子是关于小龙虾的5卢布。 由于USRN的提取物每次要300卢布,但如果涉及大量需求,并不是所有人都能买得起。

这次,考虑花费400卢布如何获得相同的结果。 从USRN中提取100种提取物。 我们的程序将执行简单的操作,转到网站,向Rosreestr提交请求时为我们填写所有必填字段。 与上次一样,我们将不再使用Rosreestr api。

它看起来像这样:


Rosreestra门户假定使用FSIS时,您将在门户上收到一个密钥-字符数字字符串。 与联邦州信息服务局一起进入工作区时,此密钥只能输入一次,并且包含在“我的密钥”部分中:



我们假设您自己收到了钥匙。 获得它的过程并不复杂。
现在,我们将编写一个自动执行请求提交的程序。

让我们从一个简单的程序开始,该程序将一个请求提交给系统。

USRN中的请求-版本2.0


导入模块:

import webbrowser,time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import NoSuchElementException import os 

我们访问FSIS USRN的网站:

 browser = webdriver.Firefox() browser.implicitly_wait(40) browser.get ('https://rosreestr.ru/wps/portal/p/cc_present/ir_egrn') 

上面已经讨论了一个友好的窗口,用于输入Rosreestr键,我们将受到欢迎:



我们通过单击“登录”按钮,确定要在其中输入密钥的窗口的CSS选择器,输入密钥并转到FSIS USR:

 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) 

并点击“继续工作”:



我们已经成功提交了一个对象的请求。

您可以在“我的应用程序”部分中确认该请求确实已成功发送到FSIS,我们已获悉。

现在,我们需要为excel表中的所有对象启动程序循环,并以某种方式击败验证码。 但是,这是一个完全不同的故事。 尽管提示保留在程序代码中,但已上载到交换器。

此处下载程序。

Source: https://habr.com/ru/post/zh-CN461045/


All Articles