我想使用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: ']
答案 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)
使用元素的lxml
和tail
属性(直接跟在元素后面的文本)。
>>> 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']