2012-07-23 53 views
0

我必須解析一些HTML。但是,它是畸形的..你可以看到文本「Cowabunga」不包含在任何HTML元素中。Python:使用lxml在跨度範圍外定位文本

from lxml.html import fromstring 
from lxml.cssselect import CSSSelector 

stuff = '''<p> 
       <span id="alpha" style="color: #999; "></span> 
       <span id="bravo" style="color: #999; "></span> 
       Cowabunga 
      </p>''' 

l = CSSSelector ("p") 

e = l(fromstring(stuff)) 
print e[0].text 

如何使用lxml/Python編寫CSSSelector來定位此文本?

感謝

編輯:上面代碼給出空白輸出 - 只是一個空格行 - 我需要趕上「Cowabunga」

+2

HTML格式不正確 - 「Cowabunga」位於'p'元素中,緊跟在'span'之後,但不在其中。 – BoltClock 2012-07-23 18:31:26

+0

是的,格式錯誤可能不是這裏的規範術語 - 史蒂文的「混合內容」似乎是一個更好的術語 – sami 2012-07-24 09:33:51

回答

2

這是混合的內容,所以它總是有點粗糙。 e[0].text_content()將獲得您示例中的所有文本。