我們在編程教室中寫過不少使用 API 開放接口的案例,比如:
- 查詢書影音的豆瓣(爬蟲 網站開發實例:電影票比價網)
- 查詢股票的tushare(想用 Python 做數據分析?先玩玩這個再說)
- 翻譯單詞的詞霸(【每週一坑解答】自動翻譯)
- 用來做人工智能的騰訊AI(調教屬於你的“賈維斯”)
但以上這些都不是我今天要說的。今天要說的這個接口,之所以稱爲“強大”,因爲它返回的內容裏蘊含了未知的巨大能量,大到可以輕鬆毀滅宇宙 N 次……
沒錯,這就是 Marvel 向開發者開放的 API。
官網地址:https://developer.marvel.com/
數據涵蓋的內容主要是 Marvel 相關的漫畫作品信息,包含:
- 1491 個角色
- 43759 本漫畫
- 6200 個創作者
- 10713 個系列
- 96740 個故事
- 75 個事件
以及這幾樣數據之間的相互關聯關係。比如你可以通過一個角色查到其所出場的事件,或者一個創作者所參與過的角色。
我做了一個簡單的小演示,可通過名字查詢相關的角色:
以及通過角色 ID 查詢其出現的漫畫:
Marvel API 不是完全公開訪問,需要先申請,不過沒有任何門檻(只要看得懂英文)。使用接口時,常規操作是按照官方提供的方式,將申請獲得的公鑰、密鑰加上時間戳進行 MD5 加密,作爲權限的驗證放在參數裏,通過 GET 方式進行請求(可以用 requests)。
而我這裏用了一個第三方封裝好的 Python 庫 marvel,省了不少工作,所以核心代碼很簡單:
import marvel
from IPython.display import Image, HTML, display
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
characters = m.characters
name = input('請輸入要查詢的英雄(英文,可只輸入開頭):')
print('搜索中...')
all_characters = characters.all(nameStartsWith=name)
第三方庫地址:https://pypi.org/project/marvel/
Marvel 的這個 API,我覺得是個非常好的練手工具。作爲一個學習者,你可以從使用中學到:
- 公鑰、私鑰、MD5加密的使用(接口權限驗證)
- API的調用,參數傳遞,JSON返回數據的處理
- 多維度數據的整理分析
- 還有,英文文檔的閱讀
讓我有點遺憾的是,數據中並沒有太多英雄角色相關的數據,不然就更有意思了。
對於這個接口的應用,我有幾個思路供參考:
- 做一個愛好者網站或者小程序,對數據提供檢索和整理展示
- 數據分析,看看哪些角色最受歡迎,哪個作者最勤奮,角色之間的相互關係等
- 小遊戲,比如集卡之類。(當然,非商業的)
早前我也推薦過豆瓣的 API,不過豆瓣現已把開發者頁面下線,無法查看具體接口說明,之後會不會對外關閉也很難說了。Marvel API 相比豆瓣 API 來說要複雜一些,主要是權限認證的部分。另外,在使用時還有一些要求,如果你之後將作品對外展示,請務必注意:
- 請求上限 1000次/天(但在我的個人頁面上看到是 3000),並且需要設定請求來源網址(referrer)。建議通過自建緩存,以減少請求量
- 需要在所有用到接口數據的頁面上標註 "Data provided by Marvel. 2014 Marvel"
- 需提供到 Marvel 官網的反鏈(http://marvel.com)
- 返回接口裏的圖片 URL 不是直接可訪問的,需添加上所需圖片尺寸和文件類型,拼出完整路徑
經常有同學說學了編程之後不知道去開發點什麼。其實可以做的東西比比皆是,需要有發現需求的眼睛。暫時沒有這方面敏感度也不要緊,多看看我們的文章,跟着我們做。如果你碰巧又是漫威粉,那就更應該嘗試一下了。之後我們也會在此數據基礎上開發一些案例,敬請期待。(立個Flag:爭取跟《復聯4》同步上線)
文中所使用的代碼已上傳,獲取代碼請在公衆號(Crossin的編程教室)裏回覆關鍵字漫威
════
其他文章及回答:
學編程:如何自學Python | 新手引導 | 一圖學Python
歡迎搜索及關注:Crossin的編程教室