python使用HTMLParser保存网页图片

来源:互联网 发布:化工流程图软件 编辑:程序博客网 时间:2024/06/05 07:34
#coding=utf-8
from HTMLParser import HTMLParser
import urllib
import sys
import os

class MyHTMLParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.links = []
    
    def handle_starttag(self, tag, attrs):
        if tag == "img":
            for (variable, value) in attrs:
                if (variable == "src"):
                    self.links.append(value)
    
if __name__ == "__main__":
    html = urllib.urlopen('http://www.baidu.com').read()
    hp = MyHTMLParser()
#    hp.feed(html)
#    网易的网页编码格式为gb2312需要修改成这样否则出错
    hp.feed(html.decode('gb2312','ignore'))
    hp.close()
    imgs = hp.links
#    print imgs

    '''
    获取文件所在绝对路径
    '''
#    basename = os.path.basename(__file__)
    dir1 = os.getcwd()
    dir2, basename = os.path.split(__file__)
    dir = dir1 + '/' + dir2
#    print "%s所在目录为%s" % (basename, dir)
    filedir = dir + '/' + basename.split('.')[0]
    #判断目录是否存在
    if not os.path.isdir(filedir):
        print '创建目录'
        os.mkdir(filedir)

    '''
    保存图片
    '''    
    filedir += '/'
    for img in imgs:
        filename = img.split('/')[-1]
        filename = filedir + filename
        urllib.urlretrieve(img, filename)
   
原创粉丝点击