json 试着从PrizePicks上刮出预测

kjthegm6  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(115)

我目前正试图通过从PrizePicks中抓取投影来简化我的投影模型过程。我一直遇到一个错误,说无效语法。任何帮助都将不胜感激。这是我的代码

import requests
import pandas as pd
pp_props_url = 'https://api.prizepicks.com/projections?league_id=7&per_page=250&single_stat=true'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
'Access-Control-Allow-Credentials': 'true',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Referer': 'https://app.prizepicks.com/',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9'

}

response = requests.get(url=pp_props_url, headers=headers).json()
player_prop = response
player_prop
columns_list = [
"League",
"League_Id",
"Market",
"Name",
"Position",
"Team",
"Team_Name"
"Stat_Type"
"Line_Score",
"Points",
"Rebounds",
"Assists",
"Pts+Rebs+Asts",
"3-Pt Made"

]

pp_df = pd.DataFrame(player_prop, columns = columns_list)
pp_df.to_csv('player_props_20221030.csv', index=False)

当我打开csv时,唯一打印的是列标题。这是这个网络抓取交易的全新版本,所以我真的很感谢任何帮助。

p4rjhz4m

p4rjhz4m1#

你的问题对我来说很麻烦。首先,我在检索.json文件时出现提示错误。这些问题在从头文件中删除'Accept-Encoding': 'gzip, deflate, br'后得到了解决。在此之后,确实返回了一个有效的.json文件,但也许这已经是你的情况。
然后在检索这个.json文件后,我可以看到你的许多columns_list头文件并不在实际的.json文件中。以League为例,它在.json文件中被定义为联赛。大写字母很重要。
此外,.json文件在included部分下呈现了所有感兴趣的球员,因此您可以这样检索他们:player_prop["included"]。然后,对于每个玩家,您对属性部分感兴趣,因此我们需要过滤它们:[i["attributes"] for i in player_prop["included"]]
现在你可以创建你的pd.DataFrame了,你会看到为每个播放器创建了一行。我只修改了几个列标题,你放置的一些似乎不在.json文件中,所以检查一下会很好(例如3-PT Made似乎是name的值),但它返回了预期的数据:

>>> pd.DataFrame([i["attributes"] for i in player_prop["included"]], columns=columns_list)
   league  league_id       market                name  ... rebounds assists  pts+rebs+asts  3-pt made
0     NBA        7.0      Houston         Jalen Green  ...      NaN     NaN            NaN        NaN
1     NBA        7.0      Phoenix          Chris Paul  ...      NaN     NaN            NaN        NaN
2     NBA        7.0      Phoenix     Cameron Johnson  ...      NaN     NaN            NaN        NaN
3     NaN        NaN          NaN       Blocked Shots  ...      NaN     NaN            NaN        NaN
4     NaN        NaN          NaN                 NBA  ...      NaN     NaN            NaN        NaN
5     NaN        NaN          NaN       Fantasy Score  ...      NaN     NaN            NaN        NaN
6     NBA        7.0      Houston    Kevin Porter Jr.  ...      NaN     NaN            NaN        NaN
7     NBA        7.0      Phoenix       Mikal Bridges  ...      NaN     NaN            NaN        NaN
8     NaN        NaN          NaN         Single Stat  ...      NaN     NaN            NaN        NaN
9     NaN        NaN          NaN           3-PT Made  ...      NaN     NaN            NaN        NaN
10    NaN        NaN          NaN             Assists  ...      NaN     NaN            NaN        NaN
11    NaN        NaN          NaN              Points  ...      NaN     NaN            NaN        NaN
12    NBA        7.0       Denver        Nikola Jokic  ...      NaN     NaN            NaN        NaN
13    NBA        7.0       Denver        Jamal Murray  ...      NaN     NaN            NaN        NaN
14    NBA        7.0  Los Angeles    Lonnie Walker IV  ...      NaN     NaN            NaN        NaN
15    NBA        7.0  Los Angeles    Patrick Beverley  ...      NaN     NaN            NaN        NaN
16    NaN        NaN          NaN              Steals  ...      NaN     NaN            NaN        NaN
17    NaN        NaN          NaN       Pts+Rebs+Asts  ...      NaN     NaN            NaN        NaN
18    NaN        NaN          NaN            Pts+Asts  ...      NaN     NaN            NaN        NaN
19    NaN        NaN          NaN       Fantasy Score  ...      NaN     NaN            NaN        NaN
20    NBA        7.0      Houston      Alperen Sengun  ...      NaN     NaN            NaN        NaN
21    NaN        NaN          NaN           Blks+Stls  ...      NaN     NaN            NaN        NaN
22    NBA        7.0  Los Angeles      LeBron James\t  ...      NaN     NaN            NaN        NaN
23    NBA        7.0       Denver  Michael Porter Jr.  ...      NaN     NaN            NaN        NaN
24    NaN        NaN          NaN           Turnovers  ...      NaN     NaN            NaN        NaN
25    NaN        NaN          NaN            Pts+Rebs  ...      NaN     NaN            NaN        NaN
26    NaN        NaN          NaN           Rebs+Asts  ...      NaN     NaN            NaN        NaN
27    NBA        7.0      Phoenix        Devin Booker  ...      NaN     NaN            NaN        NaN
28    NaN        NaN          NaN            Rebounds  ...      NaN     NaN            NaN        NaN
29    NBA        7.0       Denver        Aaron Gordon  ...      NaN     NaN            NaN        NaN
30    NBA        7.0  Los Angeles       Anthony Davis  ...      NaN     NaN            NaN        NaN

[31 rows x 12 columns]

现在以类似的方式写入.csv应该是成功的。

7kqas0il

7kqas0il2#

对于新手来说,这是一个棘手的问题。不确定你真正想要的是什么数据,但是你需要取出json中的嵌套数据。Pandas可以通过json_normalize来完成

import requests
import pandas as pd
pp_props_url = 'https://api.prizepicks.com/projections?league_id=7&per_page=250&single_stat=true'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
'Access-Control-Allow-Credentials': 'true',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Referer': 'https://app.prizepicks.com/',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9'}

response = requests.get(url=pp_props_url, headers=headers).json()
df = pd.json_normalize(response,
                       record_path =['data'])

df.to_csv('player_props_20221030.csv')

输出:

print(df)
           type  ... relationships.stat_type.data.id
0    projection  ...                              14
1    projection  ...                             106
2    projection  ...                              22
3    projection  ...                              19
4    projection  ...                             245
..          ...  ...                             ...
269  projection  ...                              23
270  projection  ...                              24
271  projection  ...                              21
272  projection  ...                              23
273  projection  ...                              23

[274 rows x 26 columns]

相关问题