使用BS4进行网络抓取:无法找到标签

时间:2016-08-07 17:49:37

标签: python beautifulsoup

有一个网站提供足球(足球)相关的统计数据,我发现内部选项查询数据是有限制的,并希望执行我自己的分析,但这样做我必须刮掉数据 - 我是使用美丽的汤4.

找到文档here

根据Beautiful Soup文档,我可以使用find_all()搜索特定标记,但是当我尝试使用它时,它会显示空白。

from urllib.request import urlopen
from bs4 import BeautifulSoup
import csv as csv 


    html = urlopen("http://members.fantasyfootballscout.co.uk/player-stats/goalkeepers/")
    bsObj = BeautifulSoup(html.read(), "lxml")

据推测,在支付墙后面你将无法访问它。考虑到这一点,我将发布代码片段。

 <tbody>
                                                                                                                                                                                        <tr>
 <td><input type="checkbox" name="players[]" value="61302"></td>
           <td class="first"> 
<a href="/player-profiles/ryan-allsopp/" class="enhanced-title" title="Ryan Allsopp"> Allsopp </a>

 <div class="profile-title">
  <img src="/images/players/small/default.png" alt="" width="42" height="64">
            <br>Ryan Allsopp <br> (Bournemouth, Goalkeeper)
 </div>                            
</td>

 <td class="nowrap">
     <span class="team-disc bou-light"></span>
<a href="/player-stats/goalkeepers/fantasy-index/bournemouth/" title="Bournemouth"> BOU</a>
</td>
                                                                                                    <td title="Starts: 0">0</td>
                                                                                                                                    <td title="Time Played: 54"> 54</td>
                                                                                                                                    <td title="Subbed On: 1">1</td>
                                                                                                                                    <td title="Subbed Off: 0"> 0</td>
                                                                                                                                    <td title="Goals: 0"> 0 </td>
                                                                                                                                    <td title="Assists: 0"> 0 </td>
                                                                                                                                    <td title="Clean Sheets: 0">0 </td>
                                                                                                                                    <td title="Goals Conceded: 1">     1 </td>
                                                                                                                                    <td title="Own Goals: 0">   0 </td>
                                                                                                                                    <td title="Saves: 0">  0  </td>
                                                                                                                                    <td title="Premier League Yellow Cards: 0">  0</td>
                                                                                                                                    <td title="Premier League Total Red Cards: 0">  0 </td>
                                                                                        </tr>
                                                                                                                                                                                        <tr>
 <td><input type="checkbox" name="players[]" value="57187"></td>

首先,我想要提取所有表格数据,但我在识别BS中的一个td时遇到问题。

bsObj.td # returns empty set
bsobj.find_all('td') # returns empty set

我哪里错了?

1 个答案:

答案 0 :(得分:0)

上面的评论很有帮助,我已按照建议坚持会话cookie但未能解决问题。

该解决方案涉及由站点的javascript部分进行的异步HTTP调用。我已经安装了selenium(文档here),我将用它来执行javascript,让我可以访问我想要的数据。