与此相关的API和Python相当新。我需要使用它们的API从Scryfall抓取图像。这是指向API文档的链接。 https://scryfall.com/docs/api
他们正在使用json,代码如下所示。 (https://api.scryfall.com/cards/cn2/78?format=json&pretty=true)
这是包含图像URI的部分。
"image_uris": {
"small": "https://img.scryfall.com/cards/small/en/cn2/78.jpg?1517813031",
"normal": "https://img.scryfall.com/cards/normal/en/cn2/78.jpg?1517813031",
"large": "https://img.scryfall.com/cards/large/en/cn2/78.jpg?1517813031",
"png": "https://img.scryfall.com/cards/png/en/cn2/78.png?1517813031",
"art_crop": "https://img.scryfall.com/cards/art_crop/en/cn2/78.jpg?1517813031",
"border_crop": "https://img.scryfall.com/cards/border_crop/en/cn2/78.jpg?1517813031"
},
我将如何在这些URI处获取图像并下载它们?
我在github上找到了这个,但是我真的不确定从哪里开始。 https://github.com/NandaScott/Scrython
我正在使用此页面上的“默认卡”文件 https://scryfall.com/docs/api/bulk-data
答案 0 :(得分:0)
您需要下载图像数据并将其保存在本地。第1步,使用Python获取图像数据:
import requests as req
img_uris = {
"small": "https://img.scryfall.com/cards/small/en/cn2/78.jpg?1517813031",
"normal": "https://img.scryfall.com/cards/normal/en/cn2/78.jpg?1517813031",
"large": "https://img.scryfall.com/cards/large/en/cn2/78.jpg?1517813031",
"png": "https://img.scryfall.com/cards/png/en/cn2/78.png?1517813031",
"art_crop": "https://img.scryfall.com/cards/art_crop/en/cn2/78.jpg?1517813031",
"border_crop": "https://img.scryfall.com/cards/border_crop/en/cn2/78.jpg?1517813031"
}
img_request = req.get(img_uris['normal'])
# Always test your response obj before performing any work!
img_request.raise_for_status()
函数raise_for_status()
将引发requests
在发出请求时遇到的任何异常。如果什么都没发生,则意味着我们收到了200个响应代码,表明我们的要求很好!现在执行第2步,保存数据:
import os
img_file = "queen_marchesa_norm.jpg"
with open(os.path.join(os.getcwd(), img_file), 'w') as f:
f.write(img_request.content)
这里,我们声明一个文件名,使用该文件名创建一个可写的文件对象,然后将所有数据从img_request
写入我们的文件对象。如果您想进一步了解requests
,请检查documentation。