python爬虫(1)下载任意网页图片


可以下载任意网页图片
本文是一个万能油, 当然本身也存在很多缺陷,因为本身写的正则表达式比较简单
但是作为爬虫的练手项目, 以及本事的思路还是很有借鉴意义的



#!/usr/bin python
#--*-- coding:utf-8 --*--
import os
import urllib
import re
import time
import urllib2    
import HTMLParser

 
#获取页面内容    
def gethtml(url):        
    print u'start crawl %s ...' % url    
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'}    
    req = urllib2.Request(url=url,headers=headers)    
    try:    
        html = urllib2.urlopen(req).read().decode('utf-8')    
        html=HTMLParser.HTMLParser().unescape(html)#处理网页内容, 可以将一些html类型的符号如" 转换回双引号      
    except urllib2.HTTPError,e:    
        print u"连接失败,错误原因:%s " % e.code    
        return None    
    except urllib2.URLError,e:    
        if hasattr(e,'reason'):    
            print u"连接失败,错误原因:%s " % e.reason    
            return None    
    return html    
 
def getImageList(html):
    #reg = "http:*?\.jpg"
    reg = 'http[^"}]*?(?:\.jpg|\.png|\.jpeg)'#匹配图片url的正则表达式
    imgre = re.compile(reg)
    imgList = re.findall(imgre,html)
    return imgList
#打印所有的图片的地址并存贮到本地 
def printImageList(imgList):
    with open("webImage/url.txt","wb+") as f:
       for i in imgList:
            print i
            f.write(i+"\r\n")
#下载存贮图片到本地
def download(imgList, page):
    x = 1
    for imgurl in imgList:
        print 'Download '+imgurl
        urllib.urlretrieve(imgurl,'./webImage/%s_%s.jpg'%(page,x))
        x+=1
    print 'Download file '+ str(x)+ ' fiel\'s end'
 
 
def downImageNum(pagenum):
    page = 1
    pageNumber = pagenum
    while(page <= pageNumber):
        html = getHtml(url)#获得url指向的html内容
        imageList = getImageList(html)
        printImageList(imageList)#打印所有的图片的地址
        download(imageList,page)#下载所有的图片
        page = page+1
 
if __name__ == '__main__':
    print '''  
            *****************************************   
            **   Welcome to python of Image        **   
            **      Modify on 2017-05-09           **   
            **      @author: Jimy _Fengqi          **   
            *****************************************  
    '''   
    os.system('mkdir webImage')#创建文件存贮目录
    url = raw_input("enter the web page\n URL:")
	if not url:
		print 'the url in None , please try again'
		break
    downImageNum(1)
    time.sleep(10)


posted @ 2016-07-11 11:28  枫奇丶宛南  阅读(29)  评论(0编辑  收藏  举报