我需要抓取网站https://e-mapa.net/,这是波兰的灾难记录。确切地说,我想从ID为'gfi_0'的元素中获取数据。问题是该元素不能一次访问,而只能在单击地图上的任何位置后才能访问。之前它甚至没有出现在html代码中(此部分显示点击后)。您可以在下面找到html代码的这一部分。
int
我尝试过
<div style="position: absolute; left: 270px; top: 170px; width: 330px; height: 350px; background-image: url("application/system/pandora/images/window_back.jpg"); border: 1px solid rgb(68, 68, 85); background-position: 0px 0px; background-repeat: repeat; border-radius: 5px; z-index: 100051; display: block;">
<div style="position: absolute; left: 6px; top: 0px; right: 24px; height: 22px; padding-top: 4px; cursor: move; overflow: hidden; font-family: tahoma; font-size: 14px; font-weight: bold; color: rgb(255, 255, 255);">Informacja o obiekcie</div>
<div style="position: absolute; inset: 26px 6px 6px; background-color: rgb(241, 244, 248); overflow: auto; border: 1px solid rgb(102, 102, 102); padding: 2px 5px 5px;">
<div style="position: relative;">
<div style="position: relative; height: 25px; background-color: rgb(204, 204, 204); margin: 6px 0px 4px; cursor: pointer;">
<div style="position: absolute; inset: 0px 24px 0px 0px;"></div>
<div style="position: absolute; top: 4px; left: 24px; font-size: 14px; font-weight: bold; color: rgb(51, 51, 51);">Ewidencja gruntów i budynków</div>
<div style="position: absolute; left: 7px; top: 2px; width: 16px; height: 16px; font-size: 16px; font-weight: bold; color: rgb(51, 51, 51); display: block;">+</div>
<div style="position: absolute; left: 7px; top: 2px; width: 16px; height: 16px; font-size: 16px; font-weight: bold; color: rgb(51, 51, 51); display: none;">-</div>
<div style="position: absolute; top: 4px; right: 5px; width: 16px; height: 16px; background-image: url("application/images/print.png"); background-repeat: no-repeat; background-position: center center;"></div>
</div>
<div style="position: relative; display: none;" id="gfi_0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>101102_2.0005.unknown</title>
<table style="color: #000; font-size: 11px;">
<tbody>
<tr><td>Identyfikator działki</td><td>101102_2.0005.unknown</td></tr>
<tr><td>Województwo</td><td>Łódzkie</td></tr>
<tr><td>Powiat</td><td>Poddębicki</td></tr>
<tr><td>Gmina</td><td>Pęczniew</td></tr>
<tr><td>Obręb</td><td>Drużbin</td></tr>
<tr><td>Numer działki</td><td>unknown</td></tr>
<tr><td>KW</td><td>brak informacji</td></tr>
<tr><td>Data publikacji danych</td><td>2019-10-25</td></tr>
<tr><td>Informacje dodatkowe o działce</td><td>Organem odpowiedzialnym za dane ewidencji gruntów i budynków jest Starosta Powiatu (ustawa Prawo geodezyjne i kartograficzne art. 7d pkt 1, Dz.U. z 2019 r. poz. 725).</td></tr>
</tbody>
</table>
</div>
</div
</div>
<div class="closeWindowButton" style="top: 4px; right: 2px;"></div>
<div class="collapseWindowButton" style="right: 19px;"></div>
</div>
或
driver.get('https://e-mapa.net/')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "gfi_0")))
但出现错误,无法找到该元素
请帮助
答案 0 :(得分:1)
恐怕这不是html的不可见部分,而只是不存在的部分,除非您在地图上单击所需的点。当您单击它时,内部javascript会检测到您单击的位置,并通过传递您的单击参数来向https://e-mapa.net/application/system/get_feature.php生成单独的http请求。响应如下所示:
<body>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>301505_5.0001.846/1</title>
</head>
<table style="color: #000; font-size: 11px;">
<tr>
<td>Identyfikator działki</td>
<td>301505_5.0001.846/1</td>
</tr>
<tr>
<td>Województwo</td>
<td>Wielkopolskie</td>
</tr>
<tr>
<td>Powiat</td>
<td>Nowotomyski</td>
</tr>
<tr>
<td>Gmina</td>
<td>Gmina Opalenica</td>
</tr>
<tr>
<td>Obręb</td>
<td>DAKOWY MOKRE</td>
</tr>
<tr>
<td>Numer działki</td>
<td>846/1</td>
</tr>
<tr>
<td>KW</td>
<td>brak informacji</td>
</tr>
<tr>
<td>Data publikacji danych</td>
<td>2019-10-24</td>
</tr>
<tr>
<td>Informacje dodatkowe o działce</td>
<td>Organem odpowiedzialnym za dane ewidencji gruntów i budynków jest Starosta Powiatu (ustawa Prawo
geodezyjne i kartograficzne art. 7d pkt 1, Dz.U. z 2019 r. poz. 725).
</td>
</tr>
</table>
</body>
它被解析并用作单击之前不存在的新DOM节点的数据源。
因此,简而言之,您必须在测试中单击某个位置,然后才能访问所需的数据。