使用python和Beautifulsoup进行webscraping时,在findAll()搜索中添加一个类会导致零结果?

时间:2018-04-18 02:15:56

标签: python html python-3.x web-scraping beautifulsoup

我是一般的编码新手。简而言之,我正在使用soup.findAll('table')函数,它会带回网页上的所有表格。当我搜索soup.findAll('table', class_='playerTable rtable')时,它会带回[]。我知道这是正确的类名,因为我从HTML中复制了它。你们知道为什么会这样吗?我在这里缺少什么?

url我试图从http://www.spotrac.com/nfl/denver-broncos/peyton-manning-5028/

中搜集

你们之所以看不到和我一样的桌子是因为你需要登录一个帐户,这需要花钱来获取信息,我的问题仍然存在,为什么会发生这种情况?当我知道有一个我正在寻找的课程表。非常感谢帮助人员!

2 个答案:

答案 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>]