【Day 25】- 什麽几百张几千张的猫猫图片,戳一戳就结束了(实战 requests 向 API 请求获得回应)

前情提要

昨天介绍了 Postman 这款 API 管理、测试工具,也在上面测试了猫猫图片的 API 发送请求。

开始之前

今天要带各位实战的是,利用 Python 中的 requests 库对 API 发送请求,以此达到取得资料的效果,这在许多前端与後端沟通上十分常见,这次要写的便是对 API 的网路爬虫。

实战

这次要使用的 API 是 https://api.thecatapi.com/v1/images/search

对其发送 GET 请求,会有一个 JSON 格式的回应。

接下来写个 requests 对该 API 进行请求,并用 json.loads 对其解析为 JSON。

import requests
import json
if __name__ == '__main__':
    url = 'https://api.thecatapi.com/v1/images/search'
    resp = requests.get(url)
    json_resp = json.loads(resp.text)
    print(json_resp)
'''
[{'breeds': [], 'id': 'vHtfrMonD', 'url': 'https://cdn2.thecatapi.com/images/vHtfrMonD.jpg', 'width': 1265, 'height': 951}]
'''

会发现猫咪图片放在 [0]['url'] 下,再来读入使用者传入的数字,接下来写个 for-loop 执行该次数次,每次对其发出请求,并把结果新增至一个 list 当中。

import requests
import json

if __name__ == '__main__':
    result_list = []
    catime = int(input("请输入要取得几张猫咪图片 : "))
    for _ in range(catime):
        url = 'https://api.thecatapi.com/v1/images/search'
        resp = requests.get(url)
        json_resp = json.loads(resp.text)
        result_list.append(json_resp[0]['url'])
    print(result_list)

最後,将其存入一个 JSON 档案中。使用者输入完数字後,等个几秒,一堆的猫猫图片就会变成一个档案了~

import requests
import json

if __name__ == '__main__':
    result_list = []
    catime = int(input("请输入要取得几张猫咪图片 : "))
    for _ in range(catime):
        url = 'https://api.thecatapi.com/v1/images/search'
        resp = requests.get(url)
        json_resp = json.loads(resp.text)
        result_list.append(json_resp[0]['url'])
    with open('Cat_images.json', 'w', encoding='utf-8') as f:
        json.dump(result_list, f, indent=2,
                  sort_keys=True, ensure_ascii=False)

结语

今天带各位用 requests 戳猫咪 API,成功获得很多猫猫图片。

明日内容

明天会带各位实战爬取拿到 CDC 的确诊者数量 API 。

补充资料

CatAPI https://api.thecatapi.com/v1/images/search


<<:  Day28:错误处理

>>:  Day25- 如何盘中计算技术指标且发送讯号到line: 成果示范

Day 23 - SwiftUI开发实作2 (多爱女朋友测试APP、Alert用法、传递变数)

今天一样是实作,不过今天实作就比较稍微不一样,我们会先讲alert的用法,并且讲解如何在不同View...

[Day30] Pentesting CheatSheet Meow Meow

终於到了最後一天了,感觉这阵子打了好多好多的靶机哦,希望过去的这些文章可以对大家有一些帮助。非常感谢...

玩玩Node.js定时器

这篇我是练习node.js关於定时的一些实作,其实都是些简单的练习。 第一个部分是setTimeou...

【Day29】Git 版本控制 - GitBook 使用教学

首先,先前往官网,可以透过 GitHub 登入连结帐号。 登入以後,可以看到我们有一个 Spaces...

【Day 02】 何谓 Data Analytics Pipeline

随着数位时代的来临,企业内数据皆已指数级增长,而多数企业也加快数位转型脚步并推动『以数据驱动的决策模...