我正在通过 selenium、python 制作爬行应用程序,但我被卡住了。
如图所示,我可以选择文本(带下划线)。但我需要的是文本旁边的数字。
但在 F12 铬
numbers(red cricle) 有类名,但类名都是一样的。没有可用于通过 selenium 选择数字的指标。(据我所知)
所以我试图找到任何通过硒通过 HTML 选择元素的方法。但我找不到任何。有什么办法吗?
如果我要找的东西不存在,我很抱歉。我只知道 python 和 selenium ..所以如果我不能处理这个,请告诉我。
- -编辑
我觉得我的解释不好。我需要的是先找到文本,而不是收集数字(两个)。但有大量的文字。我只是截图一点。所以我可以通过它的特定 ID(很多)来定位文本。但是我怎样才能得到嵌套到文本中的数字。这是我的问题。抱歉解释不好
如果 BeautifulSoup 可以处理这个问题,请告诉我。谢谢你的帮助。
特别感谢克里斯汀
她的代码解决了我的问题。
您可以使用 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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句