python 图片蜘蛛人(urllib模块)的实现代码

发布时间:2019-09-05编辑:脚本学堂
分享一例python实现的图片蜘蛛人代码,用于抓取网页内容,挺不错的,用于了python urllib模块,有需要的朋友可以看看。

本节内容:
python实现的图片蜘蛛人。

核心的代码可能20行也不到。

代码:
 

复制代码 代码示例:
#coding=utf-8 
 
import os 
import sys 
import re 
import urllib #使用urllib模块
 
URL_REG = re.compile(r'(http://[^///]+)', re.I) 
IMG_REG = re.compile(r'<img[^>]*?src=([/'"])([^/1]*?)/1', re.I) 
 
def download(dir, url): 
    '''''下载网页中的图片
    
    @dir 保存到本地的路径
    @url 网页url
    ''' 
    global URL_REG, IMG_REG 
     
    m = URL_REG.match(url) 
    if not m:  
        print '[Error]Invalid URL: ', url 
        return 
    host = m.group(1) 
     
    if not os.path.isdir(dir): 
        os.mkdir(dir) 
     
    # 获取html,提取图片url 
    html = urllib.urlopen(url).read() 
    imgs = [item[1].lower() for item in IMG_REG.findall(html)] 
    f = lambda path: path if path.startswith('http://') else / 
                host + path if path.startswith('/') else url + '/' + path 
    imgs = list(set(map(f, imgs))) 
    print '[Info]Find %d images.' % len(imgs) 
     
    # 下载图片 
    for idx, img in enumerate(imgs): 
        name = img.split('/')[-1] 
        path = os.path.join(dir, name) 
        try:  
            print '[Info]Download(%d): %s'% (idx + 1, img) 
            urllib.urlretrieve(img, path) 
        except:  
            print "[Error]Cant't download(%d): %s" % (idx + 1, img) 
     
def main(): 
    if len(sys.argv) != 3: 
        print 'Invalid argument count.' 
        return 
    dir, url = sys.argv[1:] 
    download(dir, url) 
 
if __name__ == '__main__': 
    # download('D://Imgs', 'http://www.jb200.com') 
    main()