最近有人帮助我从雅虎 NHL 页面获取分数,该页面将以相应的方式打印出球队及其上述分数。这是我的代码:
from bs4 import BeautifulSoup
from urllib.request import urlopen
url = urlopen("http://sports.yahoo.com/nhl/scoreboard?d=2013-01-19")
content = url.read()
soup = BeautifulSoup(content)
def yahooscores():
results = {}
for table in soup.find_all('table', class_='scores'):
for row in table.find_all('tr'):
scores = []
name = None
for cell in row.find_all('td', class_='yspscores'):
link = cell.find('a')
if link:
name = link.text
elif cell.text.isdigit():
scores.append(cell.text)
if name is not None:
results[name] = scores
for name, scores in results.items():
print ('%s: %s' % (name, ', '.join(scores)) + '.')
yahooscores()
现在,首先:我将这些东西关联到一个函数中,因为我将不得不不断更改 url 以获取 1 月份每一天的所有值。
这里的问题是,虽然我可以很好地打印分数和团队文本,但我正在努力做到这一点:
Ottawa: 1, 1, 2.
Winnipeg: 1, 0, 0.
Pittsburgh: 2, 0, 1
Philadelphia: 0, 1, 0.
看,我的代码没有这样做。我正在努力实现这一目标,但使过程复杂化的是,这些表都属于同一类“分数”,而且似乎我在它们之间找不到任何不同之处。
简而言之,将团队正确地相互关联,并在两者之间留出空间用于组织。