【发布时间】:2021-03-16 00:29:30
【问题描述】:
我正在尝试抓取 pokemon API 并为所有 pokemon 创建一个数据集。所以我写了一个看起来像这样的函数:
import requests
import json
import pandas as pd
def poke_scrape(x, y):
'''
A function that takes in a range of pokemon (based on pokedex ID) and returns
a pandas dataframe with information related to the pokemon using the Poke API
'''
#GATERING THE DATA FROM API
url = 'https://pokeapi.co/api/v2/pokemon/'
ids = range(x, (y+1))
pkmn = []
for id_ in ids:
url = 'https://pokeapi.co/api/v2/pokemon/' + str(id_)
pages = requests.get(url).json()
# content = json.dumps(pages, indent = 4, sort_keys=True)
if 'error' not in pages:
pkmn.append([pages['id'], pages['name'], pages['abilities'], pages['stats'], pages['types']])
#MAKING A DATAFRAME FROM GATHERED API DATA
cols = ['id', 'name', 'abilities', 'stats', 'types']
df = pd.DataFrame(pkmn, columns=cols)
该代码适用于大多数口袋妖怪。但是,当我尝试运行poke_scrape(229, 229)(因此尝试仅加载第 229 个口袋妖怪)时,它给了我 JSONDecodeError。它看起来像这样:
到目前为止,我已经尝试使用 json.loads() 代替,但这并没有解决问题。更令人困惑的是,之前已经加载了特定的 pokemon,而另一个 ID 也出现了同样的问题 - 否则我可以手动输入无法加载到我的数据帧中的特定 pokemon 的统计信息。任何帮助表示赞赏!
【问题讨论】:
标签: json api web-scraping python-requests