使用BeautifulSoup

时间:2015-10-04 21:25:07

标签: python beautifulsoup

尝试编写一些代码,首先将玩家的名字与他的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变量应返回给定玩家的工资,但目前不返回任何内容。

1 个答案:

答案 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名称,已被弃用。