首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有更好的方法来使用selenium从HTML表格中获取文本?

有没有更好的方法来使用selenium从HTML表格中获取文本?
EN

Stack Overflow用户
提问于 2021-03-15 22:31:52
回答 2查看 77关注 0票数 0

我一直在尝试获取下面附图中圈出的文本。

Table Image

Website URL

我的代码:

代码语言:javascript
复制
driver.find_element_by_xpath('/html/body/chrome/div/mat-sidenav-container/mat-sidenav-content/div/ng-component/entity-v2/page-layout/div/div/div/page-centered-layout[3]/div/div/div[1]/row-card[1]/profile-section/section-card/mat-card/div[2]/div/list-card/div/table/tbody/tr/td[2]/field-formatter/identifier-formatter/a/div/div')

下面是我的代码的输出:

代码语言:javascript
复制
NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/chrome/div/mat-sidenav-container/mat-sidenav-content/div/ng-component/entity-v2/page-layout/div/div/div/page-centered-layout[3]/div/div/div[1]/row-card[1]/profile-section/section-card/mat-card/div[2]/div/list-card/div/table/tbody/tr/td[2]/field-formatter/identifier-formatter/a/div/div"}

(会话信息: chrome=89.0.4389.82)。

我该怎么解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-16 01:53:17

要从动态表中获取值,请使用WebDriverWait()并等待visibility_of_all_elements_located(),然后使用xpath

代码语言:javascript
复制
driver.get("https://www.crunchbase.com/organization/climeon/company_financials")
columnRecords=WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//h2[.='Funding Rounds']/following ::table[1]//tbody//tr//td")))

for col in columnRecords:
    print(col.text)

你需要导入下面的库

代码语言:javascript
复制
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
票数 1
EN

Stack Overflow用户

发布于 2021-03-15 23:30:59

下面是一个如何获取表格中每个元素的文本的示例。

代码语言:javascript
复制
table = driver.find_elements_by_xpath('/html/body/chrome/div/mat-sidenav-container/mat-sidenav-content/div/ng-component/entity-v2/page-layout/div/div/div/page-centered-layout[3]/div/div/div[1]/row-card[1]/profile-section/section-card/mat-card/div[2]/div/list-card/div/table/tbody/tr/td')
for x in range(1, len(table) + 1):
    # Here you have to find what number varies between items and 
    # use x instead of that number
    text = driver.find_element_by_xpath(f'/html/body/chrome/div/mat-sidenav-container/mat-sidenav-content/div/ng-component/entity-v2/page-layout/div/div/div/page-centered-layout[3]/div/div/div[1]/row-card[1]/profile-section/section-card/mat-card/div[2]/div/list-card/div/table/tbody/tr/td[{x}]/field-formatter/identifier-formatter/a/div/div').text 
    print(text)

我在您的问题中使用了xpath,但我不知道它们是否正确,所以请测试它并让我知道

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66639932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档