Python爬取網絡圖片詳解

大家好,本期將跟大家分享一下如何利用Python實現網絡圖片的爬取和存儲。前面本人已經嘗試過利用urlretrieve()方法爬取守望先鋒官網所有英雄圖片。今天本人要分享的是Python中的一個http庫——requests庫,並且通過舉兩個例子,來告訴大家如何利用requests庫實現網絡圖片的爬取和存儲。

實例一:爬取愛寵網上寵物狗圖片

首先找到愛寵網網站,本文以爬取下面第一張卡迪根威爾士柯基的圖片爲例:

在這裏插入圖片描述
然後點擊查看這隻狗的詳細信息如下:
在這裏插入圖片描述
之後通過鼠標右鍵檢查,找到該圖片對應的url地址。
在這裏插入圖片描述
可以看到,該圖片對應的url地址爲:http://www.ichong123.com/files/2016/9/27/86/1_hkcmq.jpg。
下面將介紹如何使用requests庫實現網頁圖片的爬取和存儲。
首先,我們需要導入requests庫。

import requests # 導入requests庫

然後需要獲取網頁內容,這裏我們可以先使用get()方法,返回一個服務資源的Response對象。

r = requests.get('http://www.ichong123.com/files/2016/9/27/86/1_hkcmq.jpg') # 獲取網頁內容

這裏,我們可以用type函數查看一下變量r的類型:

type(r) # 查看變量類型

運行結果:

requests.models.Response

可以看到,變量r的類型爲一個Response對象。
那麼如何查看網頁是否訪問成功呢?可以通過檢測請求的狀態碼,如果狀態碼爲200,表示訪問成功,如果爲404,503等其它數字,說明訪問失敗。下面我們查看一下網頁是否訪問成功。

r.status_code # 檢測請求的狀態碼

運行結果:

200

可以看到,狀態碼爲200,說明網頁訪問成功。
爲了實現圖片的存儲,我們還需導入os模塊。os模塊提供了豐富的方法用來處理文件和目錄。本文假設爬取的網絡圖片存儲在C:\Users\Lenovo\Desktop\圖片目錄下,可以通過以下幾行代碼實現。

path = 'C:\\Users\\Lenovo\\Desktop\\圖片' # 圖片存儲位置
if not os.path.exists(path): # 檢查桌面是否有一個名字爲“圖片”的文件夾,如果沒有,就創建它
    os.mkdir(path)

這樣,本人電腦桌面就新建了一個名爲圖片的文件夾。
最後我們就可以使用Response對象的content屬性爬取上述圖片了。利用content屬性,可以獲取http響應內容的二進制形式,然後通過文件寫入的方式,即可爬取該圖片。

1with open(path + '\\dog.jpg', 'wb') as f: # 以寫入方式打開文件
2    f.write(r.content) # 寫入文件
3    f.close # 關閉文件

最後,我們發現,圖片已經爬取成功,並給圖片取名dog.jpg。
在這裏插入圖片描述
以下是完整代碼:

import requests # 導入requests庫
import os # 導入os模塊

def down_pic(url, filename):
   '''定義一個函數,用於下載網絡圖片,參數url爲圖片對應的url地址,filename爲爬取圖片名字'''
    r = requests.get(url) # 獲取網頁內容
    path = 'C:\\Users\\Lenovo\\Desktop\\圖片' # 爬取圖片待存儲目錄
    if not os.path.exists(path): # 判斷桌面是否有一個名稱爲“圖片”的文件夾,如果沒有,就創建它
        os.mkdir(path)    # 爬取圖片
    with open(path + '\\' + filename, 'wb') as f:     
        f.write(r.content) # 以二進制形式寫入文件   
        f.close # 關閉文件

if __name__ == '__main__':
    url = 'http://www.ichong123.com/files/2016/9/27/86/1_hkcmq.jpg' # 圖片對應的url地址
    down_pic(url, 'dog.jpg') # 調用函數

實例二:爬取抖音視頻

爬取視頻的方法跟上述一樣,首先需要找到視頻對應的url地址,然後替換即可。本文嘗試爬取本人一位同學在抖音發佈的關於王者榮耀的視頻,此人操作、意識一流,號稱××大學第一關羽,是一位時常在王者榮耀大神觀戰出沒的男子,一位集顏值與實力於一身的明星級人物,他就是放學都別走灬(爲他打個廣告)。
如何爬取呢?只需修改實例一代碼中的少量內容,即可實現抖音視頻的爬取,以下是完整代碼:

import requests # 導入requests庫
import os # 導入os模塊

def down_video(url, filename):
   '''定義一個函數,用於下載抖音視頻,參數url爲視頻對應的url地址,filename爲爬取視頻名字'''
    r = requests.get(url) # 獲取網頁內容
    path = 'C:\\Users\\Lenovo\\Desktop\\抖音' # 爬取視頻待存儲目錄
    if not os.path.exists(path): # 判斷桌面是否有一個名稱爲“抖音”的文件夾,如果沒有,就創建它
        os.mkdir(path)
    # 爬取視頻
    with open(path + '\\' + filename, 'wb') as f:     
        f.write(r.content) # 以二進制形式寫入文件   
        f.close # 關閉文件

if __name__ == '__main__':
    url = 'http://v26-dy.ixigua.com/142e8e004651705cc784f5866ff348bf/5ee1be37/video/tos/hxsy/tos-hxsy-ve-0015/45b6077ce7594c8cb542d9271cbd396c/?a=1128&br=11061&bt=3687&cr=0&cs=0&dr=0&ds=3&er=&l=20200611121613010014040037000724BB&lr=aweme&mime_type=video_mp4&qs=0&rc=M3Rwajd5c3Y6czMzZ2kzM0ApNWk4ZjhoZ2U4NzhnOGU4O2duLjZvM25vanJfLS0vLS9zczMuYDAwMi4zMGE0Xi9iMi46Yw%3D%3D&vl=&vr=' # 視頻對應的url地址
    down_video(url, '××大學第一關羽.mp4') # 調用函數

由於視頻無法上傳,大家可自行下載。

好了,以上就是本期內容,謝謝您的閱讀!

往期精彩:
Python基礎(一)| 變量與數據類型
Python基礎(二)| 列表
Python基礎(三)| 元組

想要學習更多?歡迎關注本人公衆號:Python無憂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章