利用Python抓取和解析网页(二)(3)

http://www.itjxue.com  2015-07-17 21:29  来源:未知  点击次数: 

  三、从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

  上面代码的运行输出过长,在此略过

(责任编辑:IT教学网)

更多

推荐编程综合文章