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