在python中通过xpath获取html的值

时间:2015-06-10 05:37:03

标签: python html xpath

我想使用xpath来抓取WhatIwant短语:

a="<b>AAA:</b> BBB<br/><br/><img src='line.gif' /><br/><br/><b><font size='2'>Text: </b>WahtIwant</font><br/><center>"

我想从a:

中抓取WahtIwant
tree=html.fromstring(a)
tree.xpath('//font[@size="2"]/text()')
['Text: ']

2 个答案:

答案 0 :(得分:1)

从xpath的角度来看,您想要的文本是<b>元素的 follow-sibling ,它是font[@size="2"]的父元素:

tree.xpath('//font[@size="2"]/parent::b/following-sibling::text()')

或者,您可以使用xpath选择<b>元素,其子font size属性等于2,然后选择text之后的<b>节点{ {1}}:

tree.xpath('//b[font/@size="2"]/following-sibling::text()')

答案 1 :(得分:0)

使用元素的lxmltail属性(直接跟在元素后面的文本)。

>>> import lxml.html
>>> 
>>> a = "<b>AAA:</b> BBB<br/><br/><img src='line.gif' /><br/><br/><b><font size='2'>Text: </b>WahtIwant</font><br/><center>"
>>> root = lxml.html.fromstring(a)
>>> [x.tail for x in root.xpath('//font[@size="2"]/parent::b')]
['WahtIwant']