python 批量下載圖片

#coding=utf-8
import re,sys
import urllibhtml

def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
'''
re.compile() 能夠把正則表達式編譯成一個正則表達式對象.
re.findall() 方法讀取html 中包含 imgre(正則表達式)的數據。
運行腳本將獲得整個頁面中包含圖片的URL地址。
'''python

def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
x = 0
n = len(imglist)
for imgurl in imglist:
urllib.urlretrieve(imgurl,'/Users/newuser/zdx/python/img/%s.jpg' % x)
sys.stdout.write(" 已下載:%.2f%%" % float((x+1)*100/n) + '\r')
sys.stdout.flush()
#不加sys.stdout.flush()只顯示結束時的進度
x+=1正則表達式


def callBack(*arg):
print(arg);

html = getHtml("http://tieba.baidu.com/p/2460150866")
print "開始下載.."
getImg(html)服務器

#這裏的核心是用到了urllib.urlretrieve()方法,直接將遠程數據下載到本地。函數

'''
urllib.urlretrieve(url, filename, reporthook=None,data=None)
參數說明:
url:外部或者本地url
filename:指定了保存到本地的路徑(若是未指定該參數,urllib會生成一個臨時文件來保存數據);
reporthook:是一個回調函數,當鏈接上服務器、以及相應的數據塊傳輸完畢的時候會觸發該回調。咱們能夠利用這個回調函數來顯示當前的下載進度。
data:指post到服務器的數據。該方法返回一個包含兩個元素的元組(filename, headers),filename表示保存到本地的路徑,header表示服務器的響應頭。
'''post

相關文章
相關標籤/搜索