【发布时间】:2011-05-06 02:38:56
【问题描述】:
我正在使用 lxml 的 xpath 函数来检索网页的某些部分。我正在尝试获取 <font> 标记的内容,其中包括它自己的 html 标记。如果我使用
//td[@valign="top"]/p[1]/font[@face="verdana" and @color="#ffffff" and @size="2"]
我得到了适量的节点,但它们以 lxml 对象 (<Element font at 0x101fe5eb0>) 的形式返回。
如果我使用
//td[@valign="top"]/p[1]/font[@face="verdana" and @color="#ffffff" and @size="2"]/text()
我得到了我想要的,除了我没有得到包含在 <font> 节点中的任何 HTML 代码。
如果我使用
//td[@valign="top"]/p[1]/font[@face="verdana" and @color="#ffffff" and @size="2"]/node()
如果得到文本和 lxml 元素的混合! (例如something something <Element a at 0x102ac2140> something)
有没有办法使用纯 XPath 查询来获取 <font> 节点的内容,或者甚至强制 lxml 从 .xpath() 方法返回一个内容字符串,而不是一个 lxml 对象?
请注意,我从 XPath 查询中返回了许多节点的列表,因此解决方案需要支持它。
只是为了澄清...我想从...返回something something <a href="url">inside</a> something...
<font face="verdana" color="#ffffff" size="2"><a href="url">inside</a> something</font>
【问题讨论】:
-
好问题,+1。请参阅我的答案以获得解释。