【发布时间】:2016-02-25 12:39:15
【问题描述】:
我有一个结构如下的 HTML 文档:
<html>
<li>
<a href="" />a1</a>
<other tags ... />
<li>
<a href="">a2</a>
<another one tag ... />
<a name=3>
</li>
</li>
<li>
...
</li>
我需要找到位于 li 元素下的所有父 a 元素,并使用 name= 为 a 元素构建路径3。在这个例子中,它应该是 a1/a2。我使用 lxml 并编写了这个 Python 代码:
import lxml
...
def get_path_for_series(self, html, series):
current = html.xpath('//a[@name="%s"]' % series)[0]
path = list()
while True:
category = current.xpath('.//ancestor::li[1]//a[1]')
if len(category) == 0:
break
path.append(self.clear(category[0].text_content()))
current = category[0]
return '/'.join(path)
它正确地找到了第一个元素,但是我有一个无限循环。我做错了什么?
【问题讨论】: