#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是一个回调函数。当连接上服务器以及相应的数据块传输完毕时会触发该回调函数,我们可以利用这个回调函数来显示当前的下载速度

 

版权声明:本文为paulversion原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/paulversion/p/8337272.html