我有類似這樣的<td width='370' style='border-left: 1px solid #fff;'>text I need to get</td>
,我需要使用Python獲取文本。使用Python解析HTML文檔中的文本
我應該怎麼做?我對這樣的事情很陌生。
我有類似這樣的<td width='370' style='border-left: 1px solid #fff;'>text I need to get</td>
,我需要使用Python獲取文本。使用Python解析HTML文檔中的文本
我應該怎麼做?我對這樣的事情很陌生。
我個人很喜歡BeautifulSoup。
Python有一個內置的HTML解析器模塊...
http://docs.python.org/2/library/htmlparser.html
但我建議Beautiful Soup(不要讓史前看網頁欺騙你,這是一個非常好的庫)。
另外,你也可以嘗試lxml,這也非常好。
使用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溶液
感謝您的回答,但我不需要所有的文本,只是遵循特定的HTML片段。 – Mike
試試這個,
>>> 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
我只需要特定HTML之後的文本,而不是全部文本。 – Mike
你正在使用Django Framwork? –
相關。 http://stackoverflow.com/questions/1838637/html-agility-pack-for-python – naveen
我不使用Django。 – Mike