中国互联网络资讯网提示: 对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事
三、从HTML文档中提取文本 处理HTML文档的时候,我们常常需要从其中提取出所有的文本。使用HTMLParser模块后,这项任务将变得非常简单了。首先,我们需要定义一个新的HTMLParser类,以覆盖handle_data()方法,该方法是用来解析并文本数据的。
import
HTMLParser
import urllib class parseText(HTMLParser.HTMLParser): def handle_data(self, data): if data != ' \n ' : urlText.append(data) lParser = parseText() lParser.feed(urllib.urlopen( \ http: // docs.python.org / lib / module - HTMLParser.html).read()) 定义好新的HTMLParser类之后,需要创建一个实例来返回HTMLParser对象。然后,就可以使用urllib.urlopen(url)打开HTML文档并读取该HTML文件的内容了。 为了解析HTML文件的内容并显示包含其中的文本,我们可以使用feed(data)函数将数据传递给HTMLParser对象。HTMLParser对象的feed函数将接收数据,并通过定义的HTMLParser对象对数据进行相应的解析。要注意的是,如果传给HTMLParser的feed()函数的数据不完整的话,那么不完整的标签会保存下来,并在下一次调用feed()函数时进行解析。当HTML文件很大,需要分段发送给解析器的时候,这个功能就会有用武之地了。下面是一个具体的代码示例:
import
HTMLParser
import urllib urlText = [] # 定义HTML解析器 class parseText(HTMLParser.HTMLParser): def handle_data(self, data): if data != ' \n ' : urlText.append(data) # 创建HTML解析器的实例 lParser = parseText() # 把HTML文件传给解析器 lParser.feed(urllib.urlopen( \ “http: // docs.python.org / lib / module - HTMLParser.html” \ ).read()) lParser.close() for item in urlText: print item 上面代码的运行输出过长,在此略过 |