关于 python:XPath 不是 lxml 的预期结果

XPath not expected result with lxml

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

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

我尝试了以下方法:

1
2
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


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

将除第一个 // 之外的所有内容更改为 /,它应该可以按预期工作:

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