首页 > 解决方案 > 使用 Selenium 定位具有变化数字的动态 li 元素

问题描述

我是新的 selenium 和 python,两天前才开始。我正在做一个网络抓取并试图找到一个动态的 li tage

我已经使用 Chrome 开发工具找到了 xpath。然而,由于它是一个动态元素,我认为它是其中的一部分。

我知道我可以为 li 标签使用带有递增变量的 for 循环,但后来我想知道是否有其他方法可以实现它。XML 中有 endwith 的功能,但它的 XML2.0 和浏览器支持版本 1

我正在尝试这样的事情

  //*[contains(@id,"submenu1")]/li[i]/a/span

我如何构造上面 xpath(/li[i]/a/span) 的最后一个元素,以便它可以捕获上面发布的动态数值?

这是元素的HTML代码

 //*[@id="submenu1"]/li[1]/a/span
 //*[@id="submenu1"]/li[2]/a/span
 //*[@id="submenu1"]/li[3]/a/span
 //*[@id="submenu1"]/li[4]/a/span
 //*[@id="submenu1"]/li[5]/a/span
 //*[@id="submenu1"]/li[6]/a/span
 //*[@id="submenu1"]/li[7]/a/span

实际应该能够通过更改 li 标签内的数字来捕获

标签: python-3.xseleniumweb-scraping

解决方案


尽管XPath 1.0中没有内置的end-with函数,但现有的XPath 函数和运算符允许您实现这一点,例如 HTML:

<a href="http://com.example">com.example</a>
<a href="http://example.com">example.com</a>

示例 XPath 定位以 结尾的链接com

//a[substring(text(), string-length(text()) - string-length('com')+ 1, string-length(text()))= 'com']

演示:

在此处输入图像描述


推荐阅读