python - 有没有办法通过 HTML、selenium、python 选择元素
问题描述
我正在通过 selenium、python 制作爬行应用程序,但我被卡住了。
如图所示,我可以选择文本(带下划线)。但我需要的是文本旁边的数字。
但在 F12 中
numbers(red cricle) 有类名,但类名都是一样的。没有指标可以用来通过硒选择数字。(据我所知)
所以我试图找到任何方法通过硒通过 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)
推荐阅读
- javascript - 如何按“键”与适当标题下方列出的关联数据进行分组
- php - 如何允许用户添加脚本,如 fb 像素代码、分析跟踪代码、自定义脚本……并保护平台免受攻击
- javascript - 将包含多个数组的 JSON 字符串转换为 C# 数组的问题
- ios - iOS iCloud 钥匙串 2 警报
- apex - Apex DateTime 到 String 然后传递参数
- r - 对满足两个条件的变量使用 mutate_at dplyr R
- javascript - 发生onblur时如何获取textarea的当前编辑值?
- python - 如何为小部件创建不同的字体大小但允许它们在 PySide2 中使用字体对话框进行缩放?
- python - Visual Studio Code - 缺少图标“在终端中运行 Pyrhon 文件”
- asp.net - 发布 Devexpress dll