天天看點

Python輕松入門-38 從網站上下載下傳圖檔

視訊教程下載下傳連結:​​http://pan.baidu.com/s/1nv37dbV​​​

配套教程下載下傳:​​​http://pan.baidu.com/s/1qYdI6q4​​

這節課将會非常有趣,因為我們要編寫一個小程式實來現從網上下載下傳圖檔,首先我們包含random子產品,我們将使用這個子產品的随機生成數字的功能,來為下載下傳的圖檔命名,然後,還要包含urllib.request這個子產品進來,它能夠幫我們從網上下載下傳一些各種資料包:

import  random
import urllib.request      

這裡順便告訴大家一個經驗,如果你想要實作一個功能,你想避免重複編寫代碼,但是不知道有沒有合适的子產品可以包含,這時候,你可以打開File->Settings:

圖 7‑1

然後,切換到在左邊的Project Interpreter頁籤:

圖 7‑2

這個功能可以讓你從網際網路上下載下傳你需要的子產品,假如,現在我想加入一個線性代數的子產品,首先點選右邊的+号,它會彈出一個搜尋對話框:

圖 7‑3

這裡因為我要搜尋線性代數相關的子產品,我們知道線性的英文是:linear,是以搜尋:

圖 7‑4

你看,它會彈出很多子產品供我們下載下傳,比如說,這裡我們下載下傳linear_Counter,右邊是關于這個子產品的解釋。點選左下角的Install Package即可完成安裝:

圖 7‑5

安裝成功後,關閉對話框即可,然後linearCounter就顯示在已下載下傳清單彙總了。當你覺得有些子產品不需要,可以點選右邊的‘-’号進行解除安裝:

圖 7‑6

這是一個小小的經驗供大家參考。

那麼現在,回到我們的課程中,這裡我們定義一個下載下傳函數,唯一的參數就是網址:

def download_web_image(url):      

接着,我們像上節課那樣,産生一個1到1000的随機的數字,

name = random.randrange(1, 1000)      

是以呢,我們下載下傳好的圖檔的名稱可能是288.jpg,或者999.jpg,這可能不是最好的方式,但供咱們講解課程足夠了。接着,我們要為檔案的名稱加上一個字尾名,是以定義一個full_name變量,将它加上.jpg即可。

full_name = str(name) + '.jpg'      

有了這個完整的名稱之後呢,還需要做一件事,就是:下載下傳圖檔,這時候,就需要從urllib這個子產品中調用一個函數:urlretrieve,它有兩個參數,第一個參數是圖檔所在網際網路上的連結,就是前面有http的那個東西。這裡我們就把這個函數的參數傳遞進去,第二個參數是圖檔的名稱,就是我們剛剛定義好的full_name:

urllib.request.urlretrieve(url, full_name)      

現在我們就來調用這個函數下載下傳我們自己官網的圖檔,比如說,這裡打開​​​​,找到一篇有圖檔的文章,然後把它的網址拷貝下來,接着,調用download_web_image這個函數,将網址作為參數傳遞進去,這裡需要的是一個字元串,是以需要加上引号:

download_web_image('http://www.oxox.work/web/wp-content/uploads/2016/07/chrome-privacy.png')