我需要ListArticles
h2
by changing中所有results = driver.find_element_by_xpath("//*[@id='ListArticles']/h2/a")
元素的列表,包含python和selenium。
我尝试了类似
的内容//*[@id='ListArticles']
但它不起作用。 on this webpage显示表达式的第一部分,即h2
到达我需要的子部分,但是它不会获得ListArticles
中a
的列表因此,它也无法访问h2
中的groupingBy
个链接。
非常感谢任何帮助!
答案 0 :(得分:3)
它应该是:
"id('ListArticles')//h2/a"
您的xpath
仅使用h2
获得标记的直接子标记id=ListArticles
,您使用/
,同时使用//
获取每个后代。
答案 1 :(得分:2)
而不是这个XPath,
//*[@id='ListArticles']/h2/a
使用此XPath,
//div[@id='ListArticles']/div/h2/a
考虑div
个元素的额外h2
个父级。
但请注意,a
元素下还有h3
个元素。要获取它们,并绕过任何介入的div
元素,您可以使用此XPath,
//div[@id='ListArticles']//a
在目标a
下方获取所有后代div
元素,无论其他元素如何。
答案 2 :(得分:-1)
在这种情况下,您不需要使用XPath。 IMO,你应该更喜欢CSS选择器,因为它们创建起来不那么复杂,因此更容易阅读和维护。它们也可以在浏览器中得到更好的支持,而且速度更快。
在这种情况下,CSS选择器将是#ListArticles h2 > a
。 #
表示ID。在XPath中,空格相当于//
,它表示任何后代。 >
相当于XPath中的/
,它只表示子/直系后代。
以下是一些CSS选择器引用,可帮助您了解CSS选择器。