靓汤分d攻略

2024-06-28 11:12:29 发布

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

我想通过这样一个网页进行解析,只收集初学者的名字:

http://espn.go.com/nba/boxscore?gameId=400827888

我的脚本抓住了页面上所有的名字,但我不能区分底层球队(在这里是亚特兰大)的首发球员何时开始,以及顶层球队(在这里是底特律)的替补球员何时结束。真正的问题是,顶级球队的名单上可能有11-15人,所以我不能按我所理解的数字来划分。你知道吗

如前所述,这给了我前10个活塞队的名字——不是前5个活塞队,而是前5个老鹰队。我想到的一个策略依赖于logo,但考虑到它们在HTML中的编码方式,这似乎非常棘手。你知道吗

def parse_boxscore(url):
    """Gathers names of starters from both teams, stores in list"""
    soup = make_soup(url)
    starters = [td for td in soup.findAll("td", "name")]
    return starters[0:5], starters[6:11]

谁能想出一个始终如一的策略?我不是很精通技术,所以我会牺牲相对效率的简单性(我知道,我知道)。。。你知道吗


Tags: inhttpurl网页名字策略td球员
2条回答

如果你想要的只是先发球员,那就相当直接了,只要在分区内容隐藏-测试并从中提取文本td.名称标签:

import requests
from bs4 import BeautifulSoup
teams = {}
page = requests.get('http://espn.go.com/nba/boxscore?gameId=400827888')

soup = BeautifulSoup(page.content)


for table in soup.select("div.content.hide-bench"):
    team = table.select_one("div.table-caption").find(text=True)
    teams[team] = [tr.select_one("td.name").text for tr in table.find("tbody").find_all("tr")]
from pprint import pprint as pp
pp(teams)

这给了你:

{'Hawks': ['P. MillsapPF',
           'K. BazemoreSF',
           'A. HorfordC',
           'J. TeaguePG',
           'K. KorverSG'],
 'Pistons': ['M. MorrisPF',
             'E. IlyasovaPF',
             'A. DrummondC',
             'R. JacksonPG',
             'K. Caldwell-PopeSG']}

如果你用熊猫代替靓汤,它会把桌子分开。它只得到首发球员,而不是替补球员,所以希望这不是一个问题。你知道吗

import pandas as pd 
pd.read_html('http://www.espn.com.au/nba/boxscore?gameId=400827888')

[  Unnamed: 0   1   2   3   4    T
 0        DET  25  23  34  24  106
 1        ATL  25  18  23  28   94,
              starters  MIN    FG  3PT    FT  OREB  DREB  REB  AST  STL  BLK  \
 0         M. MorrisPF   37  6-19  1-4   5-6     5     5   10    4    0    0
 1       E. IlyasovaPF   34  6-12  3-6   1-2     3     4    7    3    0    1
 2        A. DrummondC   37  6-16  0-0  6-10     8    11   19    3    1    2
 3        R. JacksonPG   32  4-10  2-4   5-5     1     7    8    5    2    0
 4  K. Caldwell-PopeSG   37  7-14  4-7   3-3     1     3    4    1    1    0

    TO  PF  +/-  PTS
 0   0   1   17   18
 1   3   4   20   16
 2   2   4   23   18
 3   2   0   26   15
 4   2   1   17   21  ,
         starters  MIN    FG  3PT   FT  OREB  DREB  REB  AST  STL  BLK  TO  PF  \
 0   P. MillsapPF   36  7-15  2-6  3-4     1     7    8    3    0    0   2   4
 1  K. BazemoreSF   21   0-3  0-1  0-0     0     7    7    1    0    0   4   3
 2    A. HorfordC   30  6-11  1-3  2-3     1     3    4    4    2    3   1   1
 3    J. TeaguePG   32  7-16  1-3  3-4     0     2    2    4    0    0   5   1
 4    K. KorverSG   29   3-9  1-5  0-0     0     2    2    1    1    0   1   4

    +/-  PTS
 0  -22   19
 1  -17    0
 2   -5   15
 3  -23   18
 4   -9    7  ,
         TEAM   W   L    PCT  GB STRK
 0  Cleveland  57  25  0.695   0   L1
 1    Indiana  45  37  0.549  12   W3
 2    Detroit  44  38  0.537  13   W1
 3    Chicago  42  40  0.512  15   W3
 4  Milwaukee  33  49  0.402  24   L2,
          TEAM   W   L    PCT  GB STRK
 0       Miami  48  34  0.585   0   L1
 1     Atlanta  48  34  0.585   0   L2
 2   Charlotte  48  34  0.585   0   W2
 3  Washington  41  41  0.500   7   W3
 4     Orlando  35  47  0.427  13   L1]

相关问题 更多 >