#coding:utf-8
from bs4 import BeautifulSoup
import requests
import urllib
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
headers ={'User-Agent':user_agent}
def Schedule(blocknum,blocksize,totalsize):
#blocknum:已经下载的数据块
#blocksize:数据块的大小
#totalsize:远程文件的大小
per = 100.0*blocknum*blocksize/totalsize
if per > 100:
per = 100
print '当前下载进度:%d' %per
r = requests.get('http://www.ivsky.com/tupian/ziranfengguang/',headers=headers)
soup = BeautifulSoup(r.text, 'html.parser', from_encoding='utf-8')
i=0
for img in soup.find_all('img'):
if img.has_attr('src')!=None:
url = img.get('src')
urllib.urlretrieve(url,'./images/img'+str(i)+'.jpg',Schedule)
i+=1
urlretrieve(url,filename=None,reporthook=None,data=None)
参数filename 指定了存储的本地路径(如果参数未指定,urllib会生成一个临时文件保存数据)
参数reporthook是一个回调函数。当连接上服务器以及相应的数据块传输完毕时会触发该回调函数,我们可以利用这个回调函数来显示当前的下载速度