python-25:將圖片下載到本地

獲得圖片的網址以後怎麼將圖片下載到本地呢?
在python中咱們使用 urllib 庫裏面的 urllib.urlretrieve() 函數
又是新函數,還記得上回在使用urllib2.Request() 函數的時候由於傳參數時沒指定好參數名,因此運行出現了一個錯誤,這回要吸收教訓,先把函數原型搞清楚
要弄清出函數原型,我目前爲止用到的有兩種方法:
1. 使用python自帶的help函數   help(urllib.urlretrieve)
2. 在/usr/lib/python2.7 中找到 python 的庫文件查看裏面的函數(linux系統)html

 這是輸出結果
1. url 是你要傳入的下載連接
2. finename 指定了保存本地路徑(若是參數未指定,urllib會生成一個臨時文件保存數據)
3. reporthook 是一個回調函數,當鏈接上服務器、以及相應的數據塊傳輸完畢時會觸發該回調,咱們能夠利用這個回調函數來顯示當前的下載進度
4. data 指 post 到服務器的數據
如今咱們暫時還用不到後面的兩個參數,因此只須要記住前面兩個參數是url,和filename 就好了

下載圖片的源碼很簡單,爲了讓你們更好的理解函數的使用,我這裏直接將圖片網址做爲URL來進行下載
python

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

import urllib
# 這個url是圖片的網址,點擊能夠直接打開圖片
url = 'http://gtd.alicdn.com/sns_logo/i3/TB1lln8KpXXXXazXFXXwu0bFXXX.png_60x60.jpg'
path = '/home/ym/pics/picture'
# 注意,這裏的path寫的是文件名,包括文件的路徑和名字
urllib.urlretrieve(url,path)

下載一張圖片很簡單吧,如今咱們來試着下載這個網頁上的全部圖片,代碼以下
linux

#!/uer/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'
'''
將網頁上的圖片下載到本地
'''

import urllib
import urllib2
import re

url = 'http://product.yesky.com/more/506001_31372_photograph_1.shtml'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}
i = 0
try:
    request = urllib2.Request(url,headers=headers)
    response = urllib2.urlopen(request)
    conents = response.read().decode("gbk")
    # 使用RE獲取圖片的網址
    pattern = re.compile(r'<img src="(.*?)".*?',re.S)
    # 返回包含圖片網址的list
    items = re.findall(pattern,conents)
    for item in items:
        # 設置圖片的路徑和名字
        path = r'/home/ym/pics/'+str(i)
        i+=1
        # 下載圖片
        urllib.urlretrieve(item,path)
        print "圖片"+path+"下載完成!"
except urllib2.URLError,e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason

輸出的結果:
服務器

 

相關文章
相關標籤/搜索