我正试图从篮球参考资料中获得game...by比赛、月份和赛季中每支球队的基本和高级数据。我对循环有信心,我可以在几个月和几个赛季中循环,但我很难从html中检索到每个游戏/框得分的具体统计数据。我在这里查看过其他答案,也在其他网站上搜索过,试图找到解决方案,但似乎对我的情况没有任何效果。
我从一开始就开始尝试并只获得一个游戏的统计数据,并打算在以后合并这些循环。下面是我的缩写代码。我认识到如果通过多个游戏循环可能会出现的问题,但我找不出解决方案(一般对web抓取和python来说都是新手)。例如,11是我想要的特定行,但是对于不同的游戏,它可能是一个不同的数字;这也阻止了代码在游戏的另一个团队中使用相同的stat。我希望代码能够识别团队的总计数字,并将其返回。
如有任何帮助/建议,将不胜感激。注释的统计数据是我试图从html中得到的。
# stats_basic = ['FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
# stats_adv = ['TS%', 'eFG%', '3PAr', 'FTr', 'ORB%', 'DRB%', 'TRB%', 'AST%', 'STL%', 'BLK%', 'TOV%', 'USG%', 'ORtg', 'DRtg', 'BPM']
url_boxscore = "https://www.basketball-reference.com/boxscores/201912010BRK.html"
stats1 = []
r = requests.get(url_boxscore)
c = r.content
soup = BeautifulSoup(c, "html.parser")
box_scores_content = soup.find_all("div",{"id":"content"})
for item in box_scores_content:
d = {}
d["FG"] = (item.find_all("td",{"data-stat":"fg"})[11].text)
d["FGA"] = (item.find_all("td",{"data-stat":"fga"})[11].text)
stats1.append(d)
df=pandas.DataFrame(stats1)
df.to_csv("Output.csv")
发布于 2022-10-19 04:31:19
在我看来,您的代码工作得很好,但问题是您在使用包之前没有导入它们。这是你的解决办法:
import requests
from bs4 import BeautifulSoup
import pandas
stats_basic = ['FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS']
stats_adv = ['TS%', 'eFG%', '3PAr', 'FTr', 'ORB%', 'DRB%', 'TRB%', 'AST%', 'STL%', 'BLK%', 'TOV%', 'USG%', 'ORtg', 'DRtg', 'BPM']
url_boxscore = "https://www.basketball-reference.com/boxscores/201912010BRK.html"
stats1 = []
r = requests.get(url_boxscore)
c = r.content
soup = BeautifulSoup(c, "html.parser")
box_scores_content = soup.find_all("div",{"id":"content"})
d = {}
for item in box_scores_content:
for stat in stats_basic:
d[stat] = (item.find_all("td",{"data-stat":"fg"})[11].text)
stats1.append(d)
df=pandas.DataFrame(stats1)
df.to_csv("Output.csv")
现在,既然你对网络抓取是新的,如果你的目标不是学习,我可以建议你一个更容易的选择是使用第三方网络刮取服务。作为Web抓取API的一名工程师,我可以向您推荐我们的网络刮刀,它可以处理captchas、IP旋转等等。
不管怎样,我希望我的答案能帮上忙!如果你遇到任何其他问题,只需在这里评论,我将非常乐意提供更多帮助。
https://stackoverflow.com/questions/74118255
复制相似问题