我希望你看看这个网站:
http://www.nhl.com/ice/teamstats.htm
现在,我的代码在这里。这只会打印出表格顶部的所有标题:
from bs4 import BeautifulSoup
from urllib.request import urlopen
url = urlopen("http://www.nhl.com/ice/teamstats.htm")
content = url.read()
soup = BeautifulSoup(content)
results = {}
for table in soup.find_all('table', class_='data stats'):
for row in table.find_all('tr'):
name = None
for cell in row.find_all('th'):
link = cell.find('a')
if link:
name = cell.a.string
print (name)
确实,这些东西更复杂。我能够通过大量帮助和重新学习一些被遗忘的Python课程,能够在这个网站上进行团队和分数的关联:http://sports.yahoo.com/nhl/scoreboard?d=2013-04-01
但是,以前的网页(第一个)有多个与其值相关联的标题。
我刚才问的是它的一些要点,以便我可以进一步完成其余的没有问题(或者可能是少数,谁知道)。从某种意义上说,这就是我希望实现的目标:
Team X: GP: 30. W: 16. L: 4, etc.
谢谢!
答案 0 :(得分:1)
您的代码只处理th
。还应处理td
。
请尝试以下操作:
from bs4 import BeautifulSoup
from urllib.request import urlopen
u = urlopen("http://www.nhl.com/ice/teamstats.htm")
soup = BeautifulSoup(u)
u.close()
for table in soup.find_all('table', class_='data stats'):
row = table.find('tr')
header = []
for cell in row.find_all('th')[1:]:
name = cell.string.strip()
header.append(name)
for row in table.find_all('tr')[1:]:
for name, cell in zip(header, row.find_all('td')[1:]):
value = cell.string.strip()
print('{}: {}'.format(name, value), end=', ')
print()