Google塗鴉(英語:Google Doodle)是Google為慶祝節日、紀念日、成就以及紀念傑出人物等而對Google首頁商標的一種特殊的臨時變更。
這些Google Doodle的設計通常都很吸引人,也相當有創意~很值得收藏細細品嘗啊!
這次,延續之前談的【簡單玩python】~~如何下載指定的網路圖片(資料),進一步結合對Google Doodle網站的分析,來實作如何一次將整個月份的Google Doodle圖檔全部下載下來!
通常要實作這類抓取網站資料的操作,都必須要先「分析」一下,該網站是怎麼將資料(圖檔)傳送到你的瀏覽器讓你看到相關的資訊!
由於每個網站的設計不盡相同,對於資訊的提供方式(或隱藏方式)也都各異,所以很難講說有甚麼一套標準方式,所以也只能且戰且走~~碰碰運氣了啦~~哈!(💪不知道就承認啦~還掰!)
以Google Doodle的展示頁面來看,可以依下列步驟分析:
1.從「Google首頁」點選「好手氣」進入
2.進入前(或進入後點選「重新整理」),開啟進入「開發人員工具」頁面3.而後點選進入「Network→XHR」頁面,可以觀察到Google Doodle頁面是以json模式,按月份分別將Google Doodle圖檔資訊傳送。
4.傳送資訊的網址就是類似下列的型式(以2020/12月份,繁體中文資料為例):
https://www.google.com/doodles/json/2020/12?hl=zh_TW
而提供的json格式及內容,也可以在「preview」頁面中加以察看
5.其中對我們這次想要處理的:下載Google Doodle圖檔的操作而言,最重要的就是圖檔網址:「url」這個資料了!
有了Google Doodle圖檔的url,我們就可以結合之前的【簡單玩python】~~如何下載指定的網路圖片(資料)操作,將該月份中所有的圖檔用迴圈方式依序下載下來了!
好囉~~經過上述的解析後,我們就可以進入程式碼的撰寫了................
from urllib.request import urlopen, urlretrieve
import json, os
# 設定抓取2020/12月份的google doodle圖檔
re = urlopen("https://www.google.com/doodles/json/2020/12?hl=zh_TW")
doodies = json.load(re) # 將抓取的json資料格式化
# 設定儲存Doodle的資料夾
dirname = "imgs/google-2020-12-doodles"
# 判斷該資料夾是否存在,不存在就先建立該資料夾
if not os.path.exists(dirname):
os.mkdir(dirname)
# 以for迴圈依序將取得的doodle資訊加以讀取並下載至指定位置
for d in doodies:
url = "https:" + d["url"] # 需自行加上「https:」
fpath = dirname+"/"+url.split("/")[-1] # 指定儲存的位置及檔名
urlretrieve(url, fpath) # 將圖檔下載至指定位置
print(f"本次共抓取{len(doodies)}張google doodle圖檔!")
執行程式後,可以看到會自動建立指定的資料夾,並將該月份共24張(以本次操作為例)圖檔都下載儲存於該資料夾中了!
如何~~~開不開心啊........
~~~那假如要下載2020一整年每個月分的doodle並按月分別儲存,要怎麼做呢??
→→大家自己先想想看吧~~~如何依序從2020/1跑到2020/12月份呢?
沒有留言:
張貼留言