欢迎关注微信公众号,搜索软件测试工程师之路,一起学习,分享,成长。

python中图片下载器的实现

上一篇 / 下一篇  2015-01-20 12:53:03 / 个人分类:python

1.       图片下载器的例子解说

(1)       图片下载,需要哪些步骤:

1.       下载图片的url

2.       图片下载后保存在哪

3.       怎么知道图片下载完成了-下载进度显示

4.       下载图片

(2)       图片的url,可以在函数中指定url,这样不灵活,每次修改url还要去函数中修改,所以直接从命令行输入,比较灵活。

1.       从命令行输入url的函数。

这个函数中只有一种有效,就是正确的url,其他的情况都会输出不合法的输入。

这个函数没有用try except捕获异常,所以运行时还是会提示错误,在判断url是否合法方面,可以用正则表达式来判断。

#输入url

def getUrl():

    while True:

        url = raw_input("please input your url:")#输入url

        if url !=r'http://www.baidu.com/img/bdlogo.png':

#url不合法的情况下退出

            print "不合法的输入!"

            break

        return url

2.  从命令行输入保存目录的函数

输入保存目录,要考虑目录存在与否的处理,在此函数中,用exists函数判断目录是否存在

#输入保存目录   

def getDest():

    dir_path = raw_input("please input your destation to store:")#输入保存目录

    if not (os.path.exists(dir_path)):#如果目录不存在

        return r"d:\\"

    return dir_path

3.  url获取网页内容的函数

urllib2模块下的urlopen函数获取网页内容

 

#打开网页获取内容

def getDF(url):

    df = urllib2.urlopen(url)

return df

4.  从网页内容中获取文件尺寸

Urlopen获取了网页文件中的所有信息。

#获取尺寸

def getSize(df):

    file_size = int(df.info().getheaders("Content-Length")[0])

    if(file_size >1024*1024 ):

        print "空间不足"

    return file_size

5.  获取文件名

获取文件名作为保存在指定目录下的名字

#获取名字,返回url中最后一个/的名字

def getName(url,df):

    try:       file_name=(str(df.info().getheaders("Content-Disposition")[0])).split('"')[1] #分离出文件名,若文件名不存在或者出错,调用except中的函数

    except IndexError ,e :

         file_name=str(url.split('/')[-1]) #分离出url中的最后一个/后面的内容,转化为字符串赋予给文件名

    return file_name

6.  下载图片

def downloadFiles(full_path,df):

     file_size_dl=0 #初始化

     block_sz=8192*50

     f=open(full_path,'wb') #打开文件

     while True:

         buffer = df.read(block_sz) #每次读取block_sz大小的网页中的内容到buffer

         if not buffer:#buffer为空,没有读取到内容,则退出while循环

             break

         file_size_dl += len(buffer) #文件大小为多次缓存区的大小之和

         f.write(buffer) #buffer内容写入到文件

         status = r"%10d [%3.2f%%]" %(file_size_dl,file_size_dl*100.0/file_size) #显示下载进度

         status = status+chr(8)*(len(status)+1) #打印空格

         print status,

     f.close() #关闭文件

     print "Got files dist file data %s" % file_size_dl

3)完整程序如下:

#-*-coding:utf-8-*-

import os

import sys

import urllib2 

 

#输入url

def getUrl():

    while True:

        url = raw_input("please input your url:")

        if url == None or url != r'http://www.baidu.com/img/bdlogo.png':#url为空的情况下退出

            print "不合法的输入!"

            break

        return url

 

#输入保存目录   

def getDest():

    dir_path = raw_input("please input your destation to store:")

    if not (os.path.exists(dir_path)):#如果目录不存在

        return r"d:\\"

    return dir_path

 

 

#打开网页获取内容

def getDF(url):

    df = urllib2.urlopen(url)

    return df

 

#获取尺寸

def getSize(df):

    file_size = int(df.info().getheaders("Content-Length")[0])

    if(file_size >1024*1024 ):

        print "空间不足"

    return file_size

 

#获取名字,返回url中最后一个/的名字

def getName(url,df):

    try:

TAG:

 

评分:0

我来说两句

日历

« 2024-04-22  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 17244
  • 日志数: 17
  • 建立时间: 2015-01-19
  • 更新时间: 2016-05-26

RSS订阅

Open Toolbar