python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSo

2019-10-06 14:22:10王旭

            print str(tag)+':'+str(tp.gettitle())
            self.processing=None
    def handle_entityref(self,name):
        if entitydefs.has_key(name):
            self.handle_data(entitydefs[name])
        else:
            self.handle_data('&'+name+';')

    def handle_charref(self,name):
        try:
            charnum=int(name)
        except ValueError:
            return
        if charnum<1 or charnum>255:
            return
        self.handle_data(chr(charnum))

    def gettitle(self):
        return self.data
fd=open('test1.html')
tp=TitleParser()
tp.feed(fd.read())

运动结果为:
title: XHTML 与" HTML 4.01 "标准没有太多的不同
连接地址:http://pypi.python.org/pypi
baidu_sylogo1.gif已经生成!
body:
i love÷ you×
?ò????

5、实际例子:
例6、获取人人网首页上的各各链接地址,代码如下:


##@小五义:
##HTMLParser示例:获取人人网首页上的各各链接地址
#coding: utf-8
from htmlentitydefs import entitydefs
import HTMLParser,urllib
def getimage(addr):
    u = urllib.urlopen(addr)
    data = u.read()
    filename=addr.split('/')[-1]
    f=open(filename,'wb')
    f.write(data)
    f.close()
    print filename+'已经生成!'
class TitleParser(HTMLParser.HTMLParser):
    def __init__(self):
        self.taglevels=[]
        self.handledtags=['a']
        self.processing=None
        self.linkstring=''
        self.linkaddr=''
        HTMLParser.HTMLParser.__init__(self)       
    def handle_starttag(self,tag,attrs):
        if tag in self.handledtags:
            for name,value in attrs:
                if name=='href':