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程序设计有所帮助。