Python 抓取图片

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

原文地址:https://www.cnblogs.com/paulversion/p/8337272.html