很抱歉,如果我的问题格式不正确,英语不是我的母语。
我正在尝试从以下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也不是一种选择,因为根据我要搜索的口袋妖怪,这似乎有所改变。
答案 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))