在看漫威系列電影的時候,你是不是經常會對一些角色感到好奇,想知道每個角色的關聯關係和出場的事件,但是卻無從下手?
現在,我們有很好的庫來幫助我們實現這些想法了!Marvel Comics API 允許各地的開發人員訪問漫威70年來龐大的漫畫庫資訊。接下來就來告訴大家怎麼使用這個漫威庫。
1.註冊賬號獲得API訪問許可權
訪問下面的連結註冊一個漫威開發者
跟著步驟走,接受它的使用條款後就能得到public key(公鑰)和 private key(私鑰)了:
2.pip安裝相應的第三方工具
在pip中輸入以下命令安裝marvel包(預設你已經安裝好了python和pip哦,如果你還沒有安裝,建議閱讀這個教程:python安裝)
pip install marvel
這個包是這個漫威API的封裝器,裡面封裝了許多查詢工程,方便我們使用,我們不需要理解怎麼傳送post請求向漫威api呼叫資料,僅僅使用一個語句,將我們剛剛獲得的公鑰和私鑰傳入進去,就可以拿到資料。
公鑰祕鑰示例
獲取所有角色:
import marvel
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
characters = m.characters
all_characters = characters.all()
print(all_characters)
獲取單個角色:
import marvel
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
characters = m.characters
character = characters.get(1011334)
print(character)
獲取一些角色的漫畫:
import marvel
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
characters = m.characters
comics = characters.comics(1011334)
print(comics)
同樣,您可以將相同的邏輯應用於不同的物件,例如:
import marvel
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
stories = m.stories
all_stores = stories.all()
story = stories.get(id)
events = stories.events(id)
print(stories, all_stores, story, events)
最後,每個物件具有的子資源如下:
人物
all
,get
,comics
,events
,series
,stories
漫畫
all
,get
,characters
,creators
,events
,stories
創作者
all
,get
,comics
,events
,series
,stories
活動
all
,get
,characters
,comics
,creators
,series
,stories
系列
all
,get
,characters
,comics
,creators
,events
,stories
故事
all
,get
,characters
,comics
,creators
,events
,series
3. 使用API找到雷神出現過的漫畫
想要使用API查詢滅霸出現過的所有漫畫,你就得先知道雷神的角色ID(character ID), 我們通過角色名字得到角色對應的ID:
import marvel
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
characters = m.characters
def get_hero_id(characters, name):
all_characters = characters.all(nameStartsWith=name)
# 根據名字獲得角色資訊,僅支援英文
ids = [i['id'] for i in all_characters['data']['results']]
names = [i['name'] for i in all_characters['data']['results']]
return ids,names
ids, names = get_hero_id(characters, 'thor')
結果:
_**(base) ckenddeMacBook-Pro:20190925 ckend$ python 1.py
**_[1009664, 1017576, 1017106, 1017315, 1017328, 1017302, 1011025, 1010820] ['Thor', 'Thor (Goddess of Thunder)', 'Thor (MAA)', 'Thor (Marvel Heroes)', 'Thor (Marvel War of Heroes)', 'Thor (Marvel: Avengers Alliance)', 'Thor (Ultimate)', 'Thor Girl']
可以看到我們好像得到了不同系列下的雷神,以1009664為例,獲得雷神出現過的漫畫。
import marvel
PUBLIC_KEY = '你的公鑰'
PRIVATE_KEY = '你的私鑰'
m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)
characters = m.characters
def get_hero_id(characters, name):
all_characters = characters.all(nameStartsWith=name)
# 根據名字獲得角色資訊,僅支援英文
ids = [i['id'] for i in all_characters['data']['results']]
names = [i['name'] for i in all_characters['data']['results']]
return ids,names
ids, names = get_hero_id(characters, 'thor')
comics = characters.comics(ids[0])
# ids[0]即1009664
print([i['title'] for i in comics['data']['results']])
結果如下:
**(base) ckenddeMacBook-Pro:20190925 ckend$ python 1.py
**['THOR VOL. 2: ROAD TO WAR OF THE REALMS TPB (Trade Paperback)', 'Marvel Masterworks: The Mighty Thor Vol. 18 (Hardcover)', 'King Thor (2019) #1', 'Thor Epic Collection: The Black Galaxy (Trade Paperback)', 'Thor (2018) #16', 'THOR & LOKI: BLOOD BROTHERS GALLERY EDITION HC (Hardcover)', 'Thor Of The Realms (Trade Paperback)', 'War Of The Realms Omega (2019) #1', 'Thor (2018) #15', 'The Unbeatable Squirrel Girl (2015) #46', 'Kirby Is… Mighty! King-Size (Hardcover)', 'Thor (2018) #14', 'War of the Realms (2019) #5', 'MARVEL ACTION CLASSICS: SPIDER-MAN TWO-IN-ONE 1 (2019) #1', 'Thor (2018) #13', 'Moon Girl and Devil Dinosaur (2015) #43', "Decades: Marvel in The '80s - Awesome Evolutions (Trade Paperback)", 'War of the Realms (2019) #3', 'The Art of War of the Realms (Trade Paperback)', 'Mighty Thor 3D (2019) #1']
可以看到,雷神一共在十九部作品裡出現過哦。怎麼樣,是不是特別方便的工具?
我們的文章到此就結束啦,如果你希望我們今天的Python 教程,請持續關注我們,如果對你有幫助,麻煩在下面點一個贊/在看哦,有任何問題都可以在下方留言區留言,我們都會耐心解答的!
Python實用寶典 (pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典
本作品採用《CC 協議》,轉載必須註明作者和本文連結
Python實用寶典, pythondict.com