Python xpath:元素中的元素
我需要一个包含Python xpath:元素中的元素,python,xml,selenium,xpath,Python,Xml,Selenium,Xpath,我需要一个包含ListArticlesh2中所有a元素的列表,以及python和selenium 我试过类似的东西 results = driver.find_element_by_xpath("//*[@id='ListArticles']/h2/a") 但它不起作用。显示表达式的第一部分,即/*[@id='ListArticles']到达我需要的小节,但是它没有得到ListArticles中的h2列表,因此,它也无法到达h2中的a链接 非常感谢您的帮助 应该是: "id('ListArti
ListArticles
h2
中所有a
元素的列表,以及python和selenium
我试过类似的东西
results = driver.find_element_by_xpath("//*[@id='ListArticles']/h2/a")
但它不起作用。显示表达式的第一部分,即/*[@id='ListArticles']
到达我需要的小节,但是它没有得到ListArticles
中的h2
列表,因此,它也无法到达h2
中的a
链接
非常感谢您的帮助 应该是:
"id('ListArticles')//h2/a"
您的xpath
仅获取h2
标记,这些标记是带有id=ListArticles
的标记的直接子标记,为此,您使用/
,同时使用/
获取每个后代。而不是此xpath
//*[@id='ListArticles']/h2/a
//div[@id='ListArticles']/div/h2/a
//div[@id='ListArticles']//a
使用这个XPath
//*[@id='ListArticles']/h2/a
//div[@id='ListArticles']/div/h2/a
//div[@id='ListArticles']//a
说明h2
元素的额外div
父元素
但是,请注意,h3
元素下也有a
元素。要获取它们,并绕过任何中间的div
元素,您可以使用这个XPath
//*[@id='ListArticles']/h2/a
//div[@id='ListArticles']/div/h2/a
//div[@id='ListArticles']//a
要获取目标
div
下的所有子代a
元素,而不考虑中间元素,在本例中,您不需要使用XPath。在我看来,您应该更喜欢CSS选择器,因为它们创建起来不那么复杂,因此更易于阅读和维护。它们还可以更好地跨浏览器支持,速度更快
在这种情况下,CSS选择器将是#ListArticles h2>a
。#
表示一个ID。空格相当于XPath中的/
,它表示任何子体。
在XPath中相当于/
,它只表示子代/直系后代
下面是一些CSS选择器参考,可以帮助您了解CSS选择器