XPath与LXML预期的结果

时间:2018-08-03 00:08:15

标签: python xpath lxml

很抱歉,如果我的问题格式不正确,英语不是我的母语。

我正在尝试从以下URL Bulapedia, Bulbasaur中获取表,但是当我使用xpath时,lxml给我非常奇怪的结果。

我尝试了以下操作:

for elem in tree.xpath('//*[@id="mw-content-text"]//table[14]//tr[3]//td//table//tr//td'):
    print(etree.tostring(elem, pretty_print=True))

这不能提供所需的数据,它可以提供来自不同表数据的值,甚至是随机的。

我不知道现在该怎么尝试,cssselect也不是一种选择,因为根据我要搜索的口袋妖怪,这似乎有所改变。

我正在尝试获得以下结果: enter image description here

1 个答案:

答案 0 :(得分:1)

除了第一个元素*[@id="mw-content-text"]之外,XPath中的所有其余元素都应该是前一个元素的直接子元素。通过使用//,您可以选择父级中任意深度的元素,这不是您想要的。

将除了前//之外的所有内容更改为/,它应该可以正常工作:

for elem in tree.xpath('//*[@id="mw-content-text"]/table[14]/tr[3]/td/table/tr/td'):
    print(etree.tostring(elem, pretty_print=True))