使用Python解析HTML文档中的文本

时间:2012-12-27 15:12:32

标签: python html parsing

我有类似<td width='370' style='border-left: 1px solid #fff;'>text I need to get</td>的内容,我需要使用Python获取文本。

我该怎么办?我对这些事情很陌生。

4 个答案:

答案 0 :(得分:2)

我个人喜欢BeautifulSoup

答案 1 :(得分:0)

Python有一个内置的html解析器模块......

http://docs.python.org/2/library/htmlparser.html

但我建议Beautiful Soup(不要让史前的主页欺骗你,这是一个非常好的图书馆。)

或者你也可以试试lxml,这也很不错。

答案 2 :(得分:0)

使用Python xml Parser的解决方案

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

使用BeautifulSOup的解决方案

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

使用HTMPParser的解决方案

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

使用Regex的解决方案

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

答案 3 :(得分: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

一样安装