如何通过PokeAPI获取前151只宝可梦数据并生成DataFrame
获取前151只宝可梦数据并转为DataFrame
首先修正你初始请求的URL错误,原URL里的limit=151=0是语法错误,正确格式应为limit=151&offset=0。以下是完整实现方案:
步骤1:获取前151只宝可梦的详情URL列表
import pandas as pd import requests # 请求初代151只宝可梦的基础列表 poke_list_response = requests.get("https://pokeapi.co/api/v2/pokemon?limit=151&offset=0") poke_list_data = poke_list_response.json() # 提取每只宝可梦的详情接口URL poke_urls = [poke["url"] for poke in poke_list_data["results"]]
步骤2:循环请求详情数据并整理字段
PokeAPI对请求频率限制宽松,151次请求完全可以直接循环处理。这里提取常用字段,你可以根据需求增减:
pokemon_data = [] for url in poke_urls: # 请求单只宝可梦的详情数据 poke_detail = requests.get(url).json() # 整理需要的信息 pokemon_info = { "id": poke_detail["id"], "name": poke_detail["name"], "height": poke_detail["height"], "weight": poke_detail["weight"], "types": ", ".join([t["type"]["name"] for t in poke_detail["types"]]), "base_experience": poke_detail["base_experience"] } pokemon_data.append(pokemon_info)
步骤3:转换为pandas DataFrame
df = pd.DataFrame(pokemon_data) # 按宝可梦编号排序,确保顺序符合初代宝可梦的编号逻辑 df = df.sort_values("id").reset_index(drop=True) # 查看前5条数据验证结果 print(df.head())
内容的提问来源于stack exchange,提问作者Uemura
相关产品推荐
相关产品推荐

