使用urllib库的urlretrieve()方法下载网络文件到本地
2018-01-08 01:35
316 查看
概述
见源码源码
# !/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 requests import urllib.request from 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%
相关文章推荐
- python 使用 urllib.urlretrieve()下载网络图片,在本地打开提示文件损坏无法打开
- Afinal加载网络图片及下载文件使用方法
- Afinal加载网络图片及下载文件使用方法
- Afinal加载网络图片及下载文件使用方法
- 从网络上下载文件的两种方法
- 使用URLConnection下载文件或图片并保存到本地
- asp.net(c#)从url网络地址下载图片或文件到本地硬盘
- 使用urlconnection下载文件或图片并保存到本地
- 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
- 使用PuTTy实现本地文件上传下载
- ubuntu使用本地已下载deb文件安装
- Android 网络应用重点———使用HttpGet 下载apk文件并安装
- jsp内存数据下载到本地--弹出的文件保存框时 两次调用action中下载方法问题
- Archlinux中使用下载到本地的源代码文件生成package
- 使用urlconnection下载文件或图片并保存到本地
- 网络编程(一):用C#下载网络文件的2种方法
- 如何绕过wubi从网上下载镜像。(使用本地已存镜像文件而非再从网上下载)
- 【用Python写爬虫】获取html的方法【四】:使用urllib下载文件
- VB.NET中使用FTP下载文件的两种方法。