使用Selenium在Python中获取HTML表体

2024-10-01 17:41:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我取消了以下页面:https://proximity.niceic.com/mainform.aspx

首先,请在“国家”文本框中输入“%”,以显示该区域中的所有承包商。进入后,如果我检查devtools中的HTML,会得到以下结果:

Chrome Devtools

我想从选定的表中提取所有信息。问题是,当我使用selenium废弃它时,我确实找到了表,但是我不能访问它的主体或子对象。在

下面是我的python代码:

main_table = driver.find_elements_by_tag_name('table')
outer_table = main_table[3].find_element_by_tag_name('table')
print outer_table.get_attribute('innerHTML')

上述代码输出以下内容:

正如您所看到的,我只能得到table标记,但是它的组件没有tbody或tbody标记中的所有tr标记

我能做什么?在


Tags: 代码namehttps标记combymaintag
1条回答
网友
1楼 · 发布于 2024-10-01 17:41:04

这里的情况是,在页面加载之后,表通过JS加载。你得等到桌子上了。为此,您必须使用Waits指定的here中的任何一个。在

我建议使用^{}。您可以这样做:

首先,您需要添加以下导入。在

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

那就换吧

^{pr2}$

try:
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'gvContractors')))
except TimeoutException:
    pass  # Handle the exception here
table = driver.find_element_by_id('gvContractors').get_attribute('innerHTML')
print(table)

它将为您提供所需的输出。我不会在这里发布输出,因为它太大了,但是您可以通过这样做来验证它

print('Company/Address' in table)

打印True

注意:
您可以直接使用_by_tag_name来查找所需的表,而不是使用_by_tag_name逐个查找表。(这里的表有id="gvContractors"

相关问题 更多 >

    热门问题