我是一般的编码新手。简而言之,我正在使用soup.findAll('table')
函数,它会带回网页上的所有表格。当我搜索soup.findAll('table', class_='playerTable rtable')
时,它会带回[]
。我知道这是正确的类名,因为我从HTML中复制了它。你们知道为什么会这样吗?我在这里缺少什么?
url我试图从http://www.spotrac.com/nfl/denver-broncos/peyton-manning-5028/
中搜集你们之所以看不到和我一样的桌子是因为你需要登录一个帐户,这需要花钱来获取信息,我的问题仍然存在,为什么会发生这种情况?当我知道有一个我正在寻找的课程表。非常感谢帮助人员!
答案 0 :(得分:0)
之所以这样,是因为此page上没有任何表同时包含 playerTable 和 rtable 类。 soup.findAll('table', class_='playerTable rtable')
是一个AND操作,即它将使用这两个类获取 table 元素,因此为空列表。
编辑:最后这种行为的主要原因是因为用于获取html的未经身份验证的请求。因此,不存在包含指定类的表。
答案 1 :(得分:0)
我没有看到您提供的链接名为“playerTable rtable”的任何类。也许你可以尝试这个,让我知道这是否是你需要的。很高兴删除/更改我的答案,如果它不适合你:
>>> r = BeautifulSoup(requests.get("http://www.spotrac.com/nfl/denver-broncos/peyton-manning-5028/").content, "lxml")
>>> r.findAll("table", attrs = {"class":"playerTable"})
[<table class="playerTable">
<tbody>
<tr>
<td class="contract-type">
<div>
<h2>
<span class="contract-type-logo"><img alt="Team contract signed with" src="http://d1dglpr230r57l.cloudfront.net/images/thumb/broncos.png"/></span>
<span class="contract-type-years">2016-2016 <small>Dead Money</small></span>
</h2>
</div>
</td>
</tr>
</tbody>
</table>, <table class="playerTable">
<tbody>
<tr>
<td style="padding-right:5px;">
<table class="salaryTable rtable current">
<thead>
<tr class="salaryRow">
<th class="header center">Year</th>
<th class="header center"> </th>
<th class="header salaryAmt center "><span>Base Salary</span></th>
<th class="header salaryAmt center"><span title="">Signing Bonus</span></th> <th class="header salaryAmt center"><span>Workout Bonus</span></th> <th class="header salaryAmt center"><span title="">Restruc. Bonus</span></th> <th class="header salaryAmt center"><span>Dead Cap Hit</span></th>
</tr>
</thead>
<tbody>
<tr class="salaryRow">
<td class="salaryYear center"><a href="http://www.spotrac.com/redirect/team/9/cap-2016/">2016</a></td>
<td class="salaryYear center"><img alt="Player contract details by year" src="http://d1dglpr230r57l.cloudfront.net/images/thumb/broncos.png"/></td>
<td class="salaryAmt ">-</td>
<td class="salaryAmt ">-</td> <td class="salaryAmt ">-</td> <td class="salaryAmt ">$2,500,000</td> <td class="salaryAmt ">$2,500,000</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>]