<body>
<tbody id="data-table">
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</body>
我需要一种快速的方法来查找每个<td>
中包含的文本
我试过了
main_table = driver.find_element(By.ID, "data-table")
for i in range(3):
main_table.find_element(By.XPATH, "tr[" + str(i + 1) + "]/td[1]").text
main_table.find_element(By.XPATH, "tr[" + str(i + 1) + "]/td[2]").text
main_table.find_element(By.XPATH, "tr[" + str(i + 1) + "]/td[3]").text
这是令人难以置信的缓慢。每次搜索近200毫秒
这个简单的循环需要3 x 3 x 200毫秒或1.8秒
我需要提取的实际数据更大,超过100tr
,每个都有5td
这需要超过100秒才能完成
有没有更快的方法来做这件事?
例如,我想知道是否有一种方法可以只提取主表下的所有标记
extracted_data = main_table.get_all_tags()
for tr in extracted_data:
for td in tr:
print(td.text)
我们的想法是提取所有子标记数据,然后使用纯Python进一步提取子数据,而不是使用find_element
进行爬行
2条答案
按热度按时间ffx8fchx1#
如果您只是在每个TD标签中查找文本,您可以这样做:
w3nuxt5m2#
识别TABLE元素并首先获取TABLE元素的
outerHtml
,然后使用Pandas读取html导入下列库
如果Pandas没有安装,那么先安装它