zoukankan      html  css  js  c++  java
  • Python 用HTMLParser解析HTML文件 转

    转自:http://andylin02.iteye.com/blog/908170

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

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

    • handle_starttag( tag, attrs)
    • handle_startendtag( tag, attrs)
    • handle_endtag( tag)

    来实现自己需要的功能。

    tag是的html标签,attrs是 (属性,值)元组(tuple)的列表(list). 
    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 = """
        <a href="www.google.com"> google.com</a>
        <A Href="www.pythonclub.org"> PythonClub </a>
        <A HREF = "www.sina.com.cn"> Sina </a>
        """
        hp = MyHTMLParser()
        hp.feed(html_code)
        hp.close()
        print(hp.links)

    输出为:

    ['www.google.com', 'www.pythonclub.org', 'www.sina.com.cn']

    如果想抽取图形链接

    <img src='http://www.google.com/intl/zh-CN_ALL/images/logo.gif' />

    就要重定义 handle_startendtag( tag, attrs) 函数

  • 相关阅读:
    HDU2059(龟兔赛跑)
    pat 1012 The Best Rank
    pat 1010 Radix
    pat 1007 Maximum Subsequence Sum
    pat 1005 Sign In and Sign Out
    pat 1005 Spell It Right
    pat 1004 Counting Leaves
    1003 Emergency
    第7章 输入/输出系统
    第六章 总线
  • 原文地址:https://www.cnblogs.com/viviancc/p/3095161.html
Copyright © 2011-2022 走看看