#python #excel #python-requests
Вопрос:
Новичок здесь,
Я поскреб стол, используя запросы от nhl.com, и я хотел бы отправить его в Excel.
import requests url = 'https://api.nhle.com/stats/rest/en/team/powerplay?isAggregate=falseamp;isGame=falseamp;sort=[{"property":"powerPlayPct","direction":"DESC"},{"property":"teamId","direction":"ASC"}]amp;start=0amp;limit=50amp;factCayenneExp=gamesPlayed>=1amp;cayenneExp=gameTypeId=2 and homeRoad="H" and seasonId=20212022' data = requests.get(url).json() for i in data['data']: print('{:lt;30} {:.1f}'.format(i['teamFullName'], i['powerPlayPct']*100))
Я использовал запросы вместо панд из-за динамического формата на nhl.com для очистки таблиц, и я не чувствую, что это создает фрейм данных (как в панд) для отправки с помощью df.to_excel.
Как я мог это сделать?
Ответ №1:
Попробуйте использовать pd.json_normalize
и передать параметр record_path как «данные»
import requests import pandas as pd url = 'https://api.nhle.com/stats/rest/en/team/powerplay?isAggregate=falseamp;isGame=falseamp;sort=[{"property":"powerPlayPct","direction":"DESC"},{"property":"teamId","direction":"ASC"}]amp;start=0amp;limit=50amp;factCayenneExp=gamesPlayed>=1amp;cayenneExp=gameTypeId=2 and homeRoad="H" and seasonId=20212022' data = requests.get(url).json() df = pd.json_normalize(data, record_path='data') # Do whatever math you want here df.to_excel('nhl_data.xlsx', index=False)
Комментарии:
1. Спасибо большое! Я попробую это сделать…
2. Это работает, но так как я хочу отправить его прямо на определенном листе, он создает другой файл с тем же именем, который стирает другие листы. Есть ли что-то, чего я здесь не делаю прямо сейчас?