昨天介紹了 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