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))
如果我的问题格式不正确,我很抱歉,英语不是我的母语。
我正在尝试从以下 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))