lx86 发表于 2015-4-25 05:38:09

Python用HTMLParser解析HTML文件

  HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析。
本文主要简单讲一下HTMLParser的用法.

  使用时需要定义一个从类HTMLParser继承的类,重定义函数:

[*]
handle_starttag( tag, attrs)
[*]
handle_startendtag( tag, attrs)
[*]
handle_endtag( tag)
  来实现自己需要的功能。
  tag是的html标签
  attrs是 (属性,值)元组(tuple)的列表(list).
  如一个标签为:
  那么它的attrs列表为[('type', 'hidden'), ('name', 'NXX'), ('id', 'IDXX'), ('value', 'VXX')]
HTMLParser自动将tag和attrs都转为小写。
  下面给出的例子抽取了html中的所有链接:

代码

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
    def __init__(self):
      HTMLParser.__init__(self)
      self.links = []

    def handle_starttag(self, tag, attrs):
      #print "Encountered the beginning of a %s tag" % tag
      if tag == "a":
            if len(attrs) == 0: pass
            else:
                for (variable, value)in attrs:
                  if variable == "href":
                        self.links.append(value)

if __name__ == "__main__":
    html_code = """
   google.com
   PythonClub
   Sina
    """
    hp = MyHTMLParser()
    hp.feed(html_code)
    hp.close()
    print(hp.links)
  
  输出为:
  ['www.google.com', 'www.pythonclub.org', 'www.sina.com.cn']

  如果想抽取图形链接
  

  就要重定义 handle_startendtag( tag, attrs) 函数
页: [1]
查看完整版本: Python用HTMLParser解析HTML文件