XPath 不是 lxml 的预期结果

XPath not expected result with lxml

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

我正在尝试从以下 url Bulapedia, Bulbasaur 中获取 table 但是当我使用 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))

这并没有给我我需要的数据,它给出了来自不同 table 数据的值,甚至是随机的。

我现在不知所措,cssselect 也不是一个选项,因为它似乎会根据我正在搜索的神奇宝贝而改变。

我正在尝试获得以下结果:

除了第一个元素 *[@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))