将ESPN本周NFL线路刮入Pandas数据框

2024-06-02 05:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码仅返回第一个游戏。我想把第5周的所有游戏和台词都放到一个数据框中。提前谢谢

import pandas as pd # library for data analysis
import requests # library to handle requests
from bs4 import BeautifulSoup # library to parse HTML documents

# get the response in the form of html
url="https://www.espn.com/nfl/lines"
response=requests.get(url)

# parse data from the html into a beautifulsoup object
soup = BeautifulSoup(response.text,'html.parser')
indiatable=soup.find('section',{'class':"Card"})

df=pd.read_html(str(indiatable))
# convert list to dataframe
df=pd.DataFrame(df[0])
print(df.head())

df

           9:30 AM    REC (ATS)  LINE  OPEN   ML    FPI
0    New York Jets  1-3 (1-3-0)  45.0  43.5  130  42.8%
1  Atlanta Falcons  1-3 (1-3-0)  -2.5  -2.5 -150  56.9%
Out[85]:
9:30 AM REC (ATS)   LINE    OPEN    ML  FPI
0   New York Jets   1-3 (1-3-0) 45.0    43.5    130 42.8%
1   Atlanta Falcons 1-3 (1-3-0) -2.5    -2.5    -150    56.9%

Tags: thetofromimport游戏dfdataget
2条回答

您只能为此使用熊猫:

dfs = pd.read_html("https://www.espn.com/nfl/lines")

dfs-数据帧列表

要在单个数据帧上合并,请执行以下操作:

df = pd.concat(dfs)

可以使用API调用获取您正在查找的数据

只需迭代响应并构建df

见下文

import requests

url = 'https://site.web.api.espn.com/apis/v2/scoreboard/header?sport=football&league=nfl&region=us&lang=en&contentorigin=espn&buyWindow=1m&showAirings=buy%2Clive%2Creplay&showZipLookup=true&tz=America/New_York'

r = requests.get(url)
if r.status_code == 200:
  print(r.json())
else:
  print(f'Oops - status code is {r.status_code}')

相关问题 更多 >