有没有办法通过HTML、selenium和python选择元素

有没有办法通过HTML、selenium和python选择元素,python,selenium,Python,Selenium,我正在通过selenium、python制作爬行应用程序,我被卡住了 如图所示,我可以选择带下划线的文本。 但我需要的是文本旁边的数字 但在F12中使用的是铬 numbersred cricle有类名,但类名都是相同的。 据我所知,没有指标可用于通过selenium选择数字 所以我试图通过selenium找到通过HTML选择元素的方法。 但是我找不到。有什么办法吗 如果我找的东西不存在,我很抱歉。 我只知道python和selenium。。所以如果我不能处理这个问题,请告诉我 --编辑 我想我解

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

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

但在F12中使用的是铬

numbersred cricle有类名,但类名都是相同的。 据我所知,没有指标可用于通过selenium选择数字

所以我试图通过selenium找到通过HTML选择元素的方法。 但是我找不到。有什么办法吗

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

--编辑


我想我解释得不好。 我需要的是先找到文本,然后收集两个数字。 但是有大量的文本。我只是截图一点点。 所以我可以通过它的特定属性来定位文本。 但是我怎样才能得到嵌套在文本中的数字呢。 这是我的问题。对不起,解释得不好

如果BeautifulSoup能处理这件事,请告诉我。谢谢你的帮助

特别感谢克里斯汀


她的密码解决了我的问题

您可以使用XPath索引来完成选择第一个td元素。根据屏幕截图,您可以选择包含2.167的第一个td,如下所示:

你应该用你在屏幕截图中加下划线的字符替换文本-我没有这个键盘,所以我无法为你键入文本

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

用户要求的完整样本:

# 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)

有必要使用硒吗。。可以进行美化吗?获取所有元素,然后使用索引-ie.all_items[2]对于所有行的情况,您可能希望将cells=driver.find_元素替换为cells=driver.find_元素scorect:我在粘贴上一个示例中的行时错过了额外的find_元素。我认为我的解释不正确。我需要的是先找到文本,然后收集两个数字。但是有大量的文本。我只是截图一点点。所以我可以通过它的特定属性来定位文本。但是我怎样才能得到文本旁边的数字呢。这是我的问题。很抱歉explanation@Shineuichul根据新信息更新了我的答案。
# 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)