2012-12-27 38 views
1

我有類似這樣的<td width='370' style='border-left: 1px solid #fff;'>text I need to get</td>,我需要使用Python獲取文本。使用Python解析HTML文檔中的文本

我應該怎麼做?我對這樣的事情很陌生。

+0

你正在使用Django Framwork? –

+0

相關。 http://stackoverflow.com/questions/1838637/html-agility-pack-for-python – naveen

+0

我不使用Django。 – Mike

回答

0

使用Python XML解析器

>>> from xml.dom.minidom import parseString 
>>> parseString(foo).getElementsByTagName("td")[0].firstChild.nodeValue 
u'text I need to get' 

使用正則表達式

>>> import re 
>>> re.findall("<.*?>(.*)<.*?>",foo)[0] 
'text I need to get' 
0使用HTMPParser

>>> from HTMLParser import HTMLParser 
>>> class MyHTMLParser(HTMLParser): 
    def handle_data(self, data): 
     print data   
>>> MyHTMLParser().feed(foo) 
text I need to get 

的溶液使用BeautifulSOup

>>> import BeautifulSoup 
>>> BeautifulSoup.BeautifulSoup(foo).getText() 
u'text I need to get' 

甲溶液A溶液A溶液

+0

感謝您的回答,但我不需要所有的文本,只是遵循特定的HTML片段。 – Mike

0

試試這個,

>>> html='''<td width='370' style='border-left: 1px solid #fff;'>text I need to get</td>''' 
>>> from BeautifulSoup import BeautifulSoup 
>>> ''.join(BeautifulSoup(html).findAll(text=True)) 
u'text I need to get' 
>>> 

該解決方案使用BeautifulSoup,

如果您的系統沒有安裝BeautifulSoup。你可以像這樣安裝sudo pip install BeautifulSoup

+0

我只需要特定HTML之後的文本,而不是全部文本。 – Mike