Python 3中HTTPparse 的使用

在python中能够进行html和xhtml的库有很多,如HTMLParser、sgmllib、htmllib、BeautifulSoup、mxTidy、uTidylib等,这里介绍一下HTMLParser、BeautifulSoup等模块。测试用的html 文件
<head> 
<title> XHTML 与" HTML 4.01 "标准没有太多的不同</title> 
</head> 
<body> 
i love÷ you× 
<a href="http://pypi.python.org/pypi" title="link1">我想你</a> 
<div id="m"><img src="http://www.baidu.com/img/baidu_sylogo1.gif" width="270" height="129" ></div> 
</body> 
</html>

以下是Python 3中的处理方法

from html.parser import HTMLParser 
from html.entities import name2codepoint
import urllib.request

def getimage(addr):
    u = urllib.request.urlopen(addr)
    data = u.read()
    filename = addr.split('/')[-1]
    f = open(filename, 'wb')
    f.write(data)
    f.close()
    print(filename + '已经生成')
    
class MyHtmlParser(HTMLParser):
    def __init__(self):
        self.taglevels = []
        self.handletags = ['title','body']
        self.processing = None
        HTMLParser.__init__(self)

    def handle_starttag(self, tag, attrs):
        if tag in self.handletags:
            self.data = ''
            self.processing = tag
        if 'a' == tag:
            for name, value in attrs:
                if name == 'href':
                    print('连接地址:'+ value)
        if 'img' == tag:
            for name,value in attrs:
                if name == 'src':
                    getimage(value)
                    
    def handle_endtag(self, tag):
        if tag in self.handletags:
            print(str(tag) + ':' + str(tp.gettitle()))
            self.processing = None

    def handle_data(self, data):
        if self.processing:
            self.data +=data
    def handle_entityref(self,name):
         c = chr(name2codepoint[name])
         self.handle_data(c)
        
        
    def gettitle(self):
        return self.data

fd = open('test1.html')
tp = MyHtmlParser()
tp.feed(fd.read())</span>

        




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值