通过url循环从API (Python)提取数据



我已经成功地创建了这段代码来从api中提取数据。我在拉游戏和一些额外的信息。

当脚本运行时,限制为20条记录。

我如何改变这个循环通过多个url ?

url末尾唯一需要修改的是数字。

import requests
import csv
url = "https://rawg-video-games-database.p.rapidapi.com/games?key=6ed342d0807f42f3ae9b2eafbd8410a9&page=1"
headers = {
"X-RapidAPI-Host": "rawg-video-games-database.p.rapidapi.com",
"X-RapidAPI-Key": "3aa825a480mshf29bc28a2e1bb23p13f777jsn9756efe984d7"
}
response = requests.request("GET", url, headers=headers, data={})
myjson = response.json()
ourdata = []
csvheader = ['ID', 'NAME', 'Rating', 'background_image']
for x in myjson['results']:
listing = [x['id'], x['name'], x['rating'], x['background_image']]
ourdata.append(listing)
with open('games.csv', 'w', encoding='UTF8', newline='') as f:
writer = csv.writer(f)
writer.writerow(csvheader)
writer.writerows(ourdata)
print('done')

号码后面有一个"查询参数"

可以通过多种方式更新参数。最接近你所拥有的东西是这样的

pageNums = 10
url = "https://rawg-video-games-database.p.rapidapi.com/games?key=6ed342d0807f42f3ae9b2eafbd8410a9&page="
headers = {
"X-RapidAPI-Host": "rawg-video-games-database.p.rapidapi.com",
"X-RapidAPI-Key": "3aa825a480mshf29bc28a2e1bb23p13f777jsn9756efe984d7"
}
ourdata = []
for pageNum in range(pageNums):
response = requests.request("GET", url + str(pageNum), headers=headers, data={})
myjson = response.json()
for x in myjson['results']:
listing = [x['id'], x['name'], x['rating'], x['background_image']]
ourdata.append(listing)
with open('games.csv', 'w', encoding='UTF8', newline='') as f:
writer = csv.writer(f)
writer.writerow(csvheader)
writer.writerows(ourdata)
csvheader = ['ID', 'NAME', 'Rating', 'background_image']
print('done')

这并不假设您知道您希望查询多少页。更有可能的是,你不知道,这些信息要么在响应本身中,要么根本没有提供,唯一知道的方法是检查response.status。这可能看起来更像

## ... set up vars as in the above example
## this replaces the outer `for` loop in the above example
done = False
pageNum = 1
while (not done):
response = requests.request("GET", url + str(pageNum), headers=headers, data={})
if response.status >= 400:
done = True
continue
myjson = response.json()
for x in myjson['results']:
listing = [x['id'], x['name'], x['rating'], x['background_image']]
ourdata.append(listing)
# ... write the csv as before

我没有运行这段代码,不要指望能够复制粘贴。响应状态可能会很复杂——我没有检查它是否完全是这样工作的,所以考虑一下这只是出于教育目的。

最新更新