现在的位置: 首页 > 综合 > 正文

#小练习 解析HTML文件并使用字典保存链接

2013年03月27日 ⁄ 综合 ⁄ 共 1591字 ⁄ 字号 评论关闭
#coding:utf-8
from HTMLParser import HTMLParser
import pprint

class myhtml(HTMLParser):

    def __init__(self):
        HTMLParser.__init__(self)
        self.d={}
        self.flag=None
        self.value=None

    #解析html声明
    def handle_decl(self,declaration):
        print 'Declaration:',declaration

    #解析开始标签
    def handle_starttag(self,tag,attrs):
        print 'Start tag:',tag
        if tag=='a':
            #如果tag是“a”,则添加标识flag=‘a’,处理链接数据时,判断是否tag为‘a’
            self.flag='a'
            if len(attrs)==0:pass
            else:
                for key,value in attrs:
                    if key=='href':
                        self.value=value
    #解析结束标签
    def handle_endtag(self,tag):
        print 'End tag:',tag

    #解析注释标签
    def handle_comment(self,comm):
        print 'Comment:',comm
    #解析数据
    def handle_data(self,data):
        #添加flag=‘a’判断,否则字典中会增加'test': None 项
        if self.flag=='a' and data.strip():#
##            print 'Data:',data
            self.d[data.strip()]=self.value
            print data.decode('utf-8')
        else:
##            print 'Data:',data
            pass


if __name__ == '__main__':
    a = '''<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\
    <html><head><!--insert javaScript here!--><title>test</title>
    <body>
    <a href="http: //www.163.com">163.com</a>
    <a href="www.google.com"> goolge.com </a>\
    <A Href="www.pythonclub.org">PythonClub </a>
    <A HREF='www.sina.com.cn'> sina </a>
    </body></html>'''
  
    m=myhtml()
    m.feed(a)
    m.close()
    print m.d

结果:

Declaration: DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
Start tag: html
Start tag: head
Comment: insert javaScript here!
Start tag: title
End tag: title
Start tag: body
Start tag: a
163.com
End tag: a
Start tag: a
 goolge.com
End tag: a
Start tag: a
PythonClub
End tag: a
Start tag: a
 sina
End tag: a
End tag: body
End tag: html
{'goolge.com': 'www.google.com', 'PythonClub': 'www.pythonclub.org', '163.com': 'http: //www.163.com', 'sina': 'www.sina.com.cn'}

抱歉!评论已关闭.