首頁/ 遊戲/ 正文

用Python爬取手機桌布,太簡單了吧!

人生苦短,快學Python!

在Python爬蟲的學習過程中,爬取圖片幾乎是每個初學者都練習過的專案,比如我們之前就分享過:如何用Python快速爬取小姐姐的美圖?

其中我們需要先利用Python中的request庫和正則構建獲取函式,以此爬取頁面中的圖片url。

用Python爬取手機桌布,太簡單了吧!

最近有位同學分享他抓包獲取到了小米桌布api介面,那這樣再去手機桌布,可就太簡單了!我們只需訪問介面,再解析json資料,即可獲取精準的桌布圖片url。

小米桌布是什麼,其實就是小米手機系統自帶的app,包含了各種風格的手機桌布。

用Python爬取手機桌布,太簡單了吧!

提供介面的同學給的連結實在太長了,我試了試刪去了不太影響主要作用的引數,剩下的介面如下所示:

https://thm。market。xiaomi。com/thm/****/type=WALLPAPER&tag=二次元宅

如果你使用瀏覽器開啟該連結,就能得到10張桌布圖片的詳細資料。其中引數

cardStart

控制翻頁,調整引數

tag

選擇不同的標籤的桌布圖片。

用Python爬取手機桌布,太簡單了吧!

剩下的只需呼叫Python下載圖片到本地即可,具體程式碼如下所示。

def download_img(url, file_name):    res = requests。get(url)    img = open(file_name, ‘wb’)    img。write(res。content)    img。close()

簡單解釋一下,requests發起get請求拿到圖片的資訊。

open開啟檔案,以

file_name

(比如111。jpg)為檔名,wb代表以二進位制覆蓋寫。

如果我們想

批次下載桌布圖片怎麼辦呢?

for迴圈就完事了呀!

在互動式環境中輸入如下命令:

for i in range(1,20):    url= f“https://thm。market。xiaomi。com/thm/*****/&cardStart={i}&type=WALLPAPER&tag=二次元宅”    html = requests。get(url)。content    data = json。loads(html。decode(‘utf-8’))    for j in range(10): # 一頁10個        image_url = data[‘apiData’][‘cards’][0][‘products’][j][‘imageUrl’]        name = data[‘apiData’][‘cards’][0][‘products’][j][‘name’]        print(name, image_url)        image_name = f“。/二次元宅/{name}。png”        download_img(image_url, image_name)

在上述程式碼中,

json。loads()

函式是將json格式資料轉換為字典。接著再搭配for迴圈獲取某一頁的10個

image_url

name

,其中

name

用於設定桌布圖片的本地路徑+名稱(使用相對路徑下載到本地)。

最後呼叫前文中自定義的函式

download_img()

,將每一張桌布圖片都下載到二次元宅資料夾中。

用Python爬取手機桌布,太簡單了吧!

▲下載程式碼執行

開啟本地路徑下的

二次元宅

的資料夾,會發現所有的圖片都已經被下載到本地。

是不是,太簡單了吧!

用Python爬取手機桌布,太簡單了吧!

開啟App看更多精彩內容

相關文章

頂部