首页 > 解决方案 > 有没有办法通过 HTML、selenium、python 选择元素

问题描述

我正在通过 selenium、python 制作爬行应用程序,但我被卡住了。

在此处输入图像描述

如图所示,我可以选择文本(带下划线)。但我需要的是文本旁边的数字。

但在 F12 中

在此处输入图像描述

numbers(red cricle) 有类名,但类名都是一样的。没有指标可以用来通过硒选择数字。(据我所知)

所以我试图找到任何方法通过硒通过 HTML 选择元素。但我找不到。有什么办法吗?

如果我要找的东西不存在,我很抱歉。我只知道 python 和 selenium.. 所以如果我不能处理这个,请告诉我。

- -编辑

我想我做出了不好的解释。我需要的是首先找到文本,而不是收集数字(两个)。但有大量的文字。我只是截图一点点。所以我可以通过它的特定ID(很多)来定位文本。但我怎样才能得到嵌套到文本的数字。这是我的问题。抱歉解释不好

如果 BeautifulSoup 可以处理这个问题,请告诉我。谢谢你的帮助。


特别感谢克里斯汀

她的代码解决了我的问题。

标签: pythonselenium

解决方案


您可以使用 XPath 索引来完成选择第一个td元素。给定屏幕截图,您可以选择第一个td包含2,.167

cell = driver.find_element_by_xpath("//tr[td/a[text()='TEXT']]/td[@class='txt-r'][1]")
print(cell.text)

你应该用TEXT你在截图中划线的字符替换——我没有这个键盘,所以我不能为你输入文本。

上面的 XPath 将查询所有表格行,选择包含所需文本的行,然后txt-r在一行内查询具有类的表格单元格。因为这两个td元素都具有 class txt-r,所以您只想选择其中一个,使用由 指示的索引[1]。将[1]选择第一个td,带有文本2,167

用户要求的完整样品:

# first get all text on the page
all_text_elements = driver.find_elements_by_xpath("//a[contains(@class, 'link-resource')]")

# iterate text elements and print both numbers that are next to text
for text_element in all_text_elements:

    # get the text from web element
    text = text_element.text

    # find the first number next to it (2,167 from sample HTML)
    first_number = driver.find_element_by_xpath("//tr[td/a[text()='" + text + "']]/td[@class='txt-r'][1]")
    print(first_number.text)

    # find 2nd number (0 from sample HTML)
    second_number = driver.find_element_by_xpath("//tr[td/a[text()='" + text + "']]/td[@class='txt-r'][2]")
    print(second_number.text)

推荐阅读