我在解析 NBA 首发阵容的代码时遇到困难,如果可能的话希望得到一些帮助。
这是迄今为止我的代码:
import requests
from bs4 import BeautifulSoup
url = "https://www.rotowire.com/basketball/nba-lineups.php"
soup = BeautifulSoup(requests.get(url).text, "html.parser")
lineups = soup.find_all(class_='lineup__player')
print(lineups)
我正在寻找以下数据:
玩家
团队
位置
我希望抓取数据,然后从输出创建一个 Pandas Dataframe。
这是我想要的输出的示例:
Player Team Position
Dennis Schroder BOS PG
Robert Langford BOS SG
Jayson Tatum BOS SF
Jabari Parker BOS PF
Grant Williams BOS C
Player Team Postion
Kyle Lowry MIA PG
Duncan Robinson MIA SG
Jimmy Butler MIA SF
P.J.Tucker MIA PF
Bam Adebayo MIA C
... ... ...
我能够找到播放器数据,但无法成功解析它。我可以看到位于“标题”内的玩家数据。
任何有关如何完成此项目的提示将不胜感激。预先感谢您提供的任何帮助。
我只是寻找5名首发球员...不需要添加替补球员。并且不确定是否有某种方法可以在每个团队之间添加空格,就像我上面的输出一样。
这是我想解析的当前输出的示例:
[<li class="lineup__player is-pct-play-100" title="Very Likely To Play">
<div class="lineup__pos">PG</div>
<a href="/basketball/player.php?id=3444" title="Dennis Schroder">D. Schroder</a>
</li>, <li class="lineup__player is-pct-play-100" title="Very Likely To Play">
<div class="lineup__pos">SG</div>
<a href="/basketball/player.php?id=4762" title="Romeo Langford">R.
您走在正确的道路上。这是一种方法。
import requests, pandas
from bs4 import BeautifulSoup
url = "https://www.rotowire.com/basketball/nba-lineups.php"
soup = BeautifulSoup(requests.get(url).text, "html.parser")
lineups = soup.find_all(class_='is-pct-play-100')
positions = [x.find('div').text for x in lineups]
names = [x.find('a')['title'] for x in lineups]
teams = sum([[x.text] * 5 for x in soup.find_all(class_='lineup__abbr')], [])
df = pandas.DataFrame(zip(names, teams, positions))
print(df)
问题。有谁知道如何将这些阵容分类为适当的对决并为其创建不同的表格吗?也许还可以为这些球队比赛添加主/客栏