尝试编写一些代码,首先将玩家的名字与他的salary.request相匹配。我能够写出这样的内容,它会通过从“sortcell”类中调用它来获取给定团队中的每个玩家名称,但我似乎无法弄清楚如何获得薪水,因为他们都被称为。
from bs4 import BeautifulSoup
from urllib import urlopen
teams = ['http://espn.go.com/nba/team/roster/_/name/atl/atlanta-hawks']
for team in teams:
html = urlopen('' + team)
soup = BeautifulSoup(html.read(), 'lxml')
names = soup.findAll("td", {"class": "sortcell"})
salary = soup.findAll("td", {"class": "td"})
print(salary)
for i in range(1, 15):
name = names[i].get_text()
print(name)
您可以在以“salary”开头的代码中看到我的(失败)尝试。关于如何获得薪资等级的任何想法?谢谢!
预期行为:
Salary变量应返回给定玩家的工资,但目前不返回任何内容。
答案 0 :(得分:3)
您的salary
列表为空,因为带有薪资信息的<td>
元素没有CSS类;当然不是td
。
如果您从names
单元格导航到相应的工资单元格,您会有更轻松的时间;行中的最后一个:
for name in soup.find_all("td", class_="sortcell"):
salary = name.parent.find_all('td')[-1] # last cell in the row
print(name.get_text())
print(salary.get_text())
我使用了soup.find_all()
语法; findAll()
是方法的旧BeautifulSoup 3名称,已被弃用。