概述
見源碼
源碼
# !/usr/bin/env python# -*- coding:utf-8 -*- """圖片(文件)下載,核心方法是 urllib.urlrequest 模塊的 urlretrieve()方法 urlretrieve(url, filename=None, reporthook=None, data=None) url: 文件url filename: 保存到本地時,使用的文件(路徑)名稱 reporthook: 文件傳輸時的回調函數 data: post提交到服務器的數據 該方法返回一個二元元組("本地文件路徑",<http.client.HTTPMessage對象>)""" import requestsimport urllib.requestfrom lxml import etree def crawl(): url='http://www.ivsky.com/tupian/haiyangshijie/' headers={ "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36", } resp=requests.get(url,headers=headers) if resp.status_code==200: resp.encoding='UTF-8' html=etree.HTML(resp.text) img_titles=html.xpath('//ul[@class="ali"]//a/@title') img_urls=html.xpath('//ul[@class="ali"]//a/img/@src') data=zip(img_titles,img_urls) for img_title,img_url in data: print('開始下載{title}.jpg'.format(title=img_title)) result=urllib.request.urlretrieve(img_url, filename='../../data/圖片下載爬蟲/{title}.jpg'.format(title=img_title), reporthook=loading, data=None) # print(result) def loading(blocknum,blocksize,totalsize): """ 回調函數: 數據傳輸時自動調用 blocknum:已經傳輸的數據塊數目 blocksize:每個數據塊字節 totalsize:總字節 """ percent=int(100*blocknum*blocksize/totalsize) if percent>100: percent=100 print("正在下載>>>{}%".format(percent)) import time time.sleep(0.5) if __name__ == '__main__': crawl()運行結果
開始下載海里的海龜圖片.jpg
正在下載>>>0%
正在下載>>>100%
開始下載綺麗的海底世界圖片.jpg
正在下載>>>0%
正在下載>>>43%
正在下載>>>87%
正在下載>>>100%
開始下載可愛的海豹圖片.jpg
正在下載>>>0%
正在下載>>>50%
正在下載>>>100%
開始下載不同的海星圖片.jpg
正在下載>>>0%
正在下載>>>63%
正在下載>>>100%
開始下載可愛的水母圖片.jpg
正在下載>>>0%
正在下載>>>100%
開始下載活潑可愛的海豚圖片.jpg
正在下載>>>0%
正在下載>>>47%
正在下載>>>95%
正在下載>>>100%
開始下載陽光下的海膽殼圖片.jpg
正在下載>>>0%
正在下載>>>63%
正在下載>>>100%
開始下載海洋中的水母圖片.jpg
正在下載>>>0%
正在下載>>>56%
正在下載>>>100%
開始下載千姿百態的海螺圖片.jpg
正在下載>>>0%
正在下載>>>62%
正在下載>>>100%
開始下載水族館里的水生動植物圖片.jpg
正在下載>>>0%
正在下載>>>46%
正在下載>>>93%
正在下載>>>100%
開始下載水母圖片.jpg
正在下載>>>0%
正在下載>>>100%
開始下載海星攝影圖片.jpg
正在下載>>>0%
正在下載>>>79%
正在下載>>>100%
開始下載五彩斑斕的海洋魚群圖片.jpg
正在下載>>>0%
正在下載>>>29%
正在下載>>>59%
正在下載>>>89%
正在下載>>>100%
開始下載漂亮的貝殼圖片.jpg
正在下載>>>0%
正在下載>>>39%
正在下載>>>79%
正在下載>>>100%
開始下載海底水母圖片.jpg
正在下載>>>0%
正在下載>>>82%
正在下載>>>100%
開始下載海底的珊瑚圖片.jpg
正在下載>>>0%
正在下載>>>48%
正在下載>>>97%
正在下載>>>100%
開始下載海星高清圖片.jpg
正在下載>>>0%
正在下載>>>25%
正在下載>>>50%
正在下載>>>75%
正在下載>>>100%
開始下載色彩鮮艷的熱帶海洋魚圖片.jpg
正在下載>>>0%
正在下載>>>63%
正在下載>>>100%
以上這篇使用urllib庫的urlretrieve()方法下載網絡文件到本地的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答