Python/Selenium:有什么方法可以通配符xpath的结尾吗?或者搜索特定格式的xpath片段?



我正在使用python/selenium存档一些帖子。它们是简单的文本+图像。由于该网站需要登录,所以我使用selenium来访问它。

问题是,页面显示了所有的帖子,他们只有在点击"阅读更多"的文本时才能完全可读,这会弹出一个完整的文本/图像。

所以我写了一个脚本来滚动页面,点击阅读更多,刮掉文章,关闭它,然后转到下一个。

我遇到的问题是,每个阅读更多按钮是一个相同的元素:

<a href="javascript:;" style="font-weight: 400">read more</a>

如果我尝试使用xpath遍历它们,就会遇到它们的格式也不同的问题,例如:

//*[@id="page"]/div[2]/article[10]/div[2]/ul/li/a
//*[@id="page"]/div[2]/article[14]/div[2]/p[3]/a

我尝试格式化我的循环,只循环文章编号,但当然xpath的终止方式不同。是否有一种方法可以将通配符添加到xpath的后半部分?还是只根据文章编号搜索?

/用于直接子,使用//代替从<article><a>

//*[@id="page"]/div[2]/article//a[.="read more"]

这将给你一个可以迭代的元素列表。你可能能够删除[.="read more"],但它可能捕获不相关的<a>标签,这取决于html结构的其余部分。

您也可以尝试直接通过文本

查找read more元素。
//a[.="read more"]

我建议在xpath上使用CSS选择器。CSS选择器提供了更快、更清晰、更简单的方式来处理这些查询。

('a[href^="javascript"]')

这将选择所有href属性值以"javascript"开头的元素。这就是你要找的…

你可以在selenium中了解更多关于通过CSS选择器定位元素的信息。

readMore = driver.find_element(By.CSS_SELECTOR, 'a[href^="javascript"]')

和关于通过链接文本定位超链接

readMore_link = driver.find_elements(By.LINK_TEXT, 'javascript')

最新更新