Python实现批量下载图片的方法
本文实例讲述了Python实现批量下载图片的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/envpython #-*-coding:utf-8-*-' #Filename:download_file.py importos,sys importre importurllib importurllib2 base_url='xxx' array_url=list() pic_url=list() inner_url=list() defget_array_url(array_url,base_url): content=urllib.urlopen(base_url).read() array_url_a=re.findall(r'/rihan.*?.html',content) forurlinarray_url_a: url_a='xxx'+url #printurl_a array_url.append(url_a) defget_inner_url(array_url,inner_url): inner_url.append(array_url) content=urllib.urlopen(array_url[10]).read() content=content.replace("","") url_a=re.findall(r'<li>.*?</li>',content) foriinurl_a: url=re.findall(r'ahref=\\'.*?.html\\'target',i) iflen(url)>0: #printurl[0] url_b=re.sub(r'ahref=\\'','',url[0]) #printurl_b url_c=re.sub(r'\\'target','',url_b) url_c='http://xxx/'+re.sub(r'/.*/','',url_c) inner_url.append(url_c) delinner_url[1] #printinner_url defget_pic_url(pic_url,inner_url,array_url): content=urllib.urlopen(array_url).read() pic_url_a=re.findall(r'center.*?.jpg',content) print'bbbbbbbbb',len(pic_url_a) pic_url_a=re.findall(r'http://.*.jpg',pic_url_a[0]) pic_url.append(pic_url_a[0]) j=2 foriininner_url: jj='/'+str(j)+'.jpg' pic=re.sub(r'/1.jpg',jj,pic_url_a[0]) pic_url.append(pic) j=j+1 delpic_url[-1] foriinpic_url: printi defurlcallback(a,b,c): """ callbackfunction a,已下载的数据块 b,数据块的大小 c,远程文件的大小 """ print"callback" prec=100.0*a*b/c if100<prec: prec=100 print"%.2f%%"%(prec,) defdownload(img_url,file_num): forimginimg_url: printimg img_name=re.sub(r'http://.*/','',img) path='C:/'+str(file_num)+'/'+img_name urllib.urlretrieve(img,path,urlcallback) get_array_url(array_url,base_url) file_num=3 #download(pic_url,file_num) get_inner_url(url,inner_url) get_pic_url(pic_url,inner_url,url) ''' forurlinarray_url: printurl #get_inner_url(url,inner_url) #get_pic_url(pic_url,inner_url) get_inner_url(url,inner_url) get_pic_url(pic_url,inner_url,url) download(pic_url,file_num) file_num=file_num+1 delinner_url[:] delpic_url[:] '''
希望本文所述对大家的Python程序设计有所帮助。