2016-08-07 2 views
0

Существует сайт, который содержит статистику по футболу (футбол), я нахожу, что внутренняя опция запроса данных ограничивает и хочет выполнить мой собственный анализ, но делать поэтому я должен очистить данные - я использую Beautiful Soup 4.Веб-скребок с BS4: не удалось найти тег

Документация не найдена here.

Согласно документации Beautiful Soup, я могу найти конкретный тег, используя find_all(), однако, когда я пытаюсь его использовать, он появляется для пробела.

из urllib.request импорта urlopen из BS4 импорта BeautifulSoup импорта CSV в 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> 

Для начала я хочу, чтобы вывести все данные таблицы, но у меня возникают проблемы идентификации даже один тд в БС.

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

Куда я иду не так?

+1

Вы упомянули paywall. Вы уверены, что ваш код Python может получить доступ к этой странице? Вы пытались 'print (html.read())'? –

+2

Вы должны переформатировать свой HTML-текст, он очень не читается. – ffledgling

+0

@OmarShehata: b '' –

ответ

0

Замечания выше были полезны, я сохранял файлы cookie сеанса, как это было предложено, хотя это не помогло решить проблему.

Решение относится к асинхронным HTTP-вызовам, выполняемым частью javascript сайта. Я установил селен (документация here), которую я буду использовать для выполнения javascript, чтобы предоставить мне доступ к тем данным, которые я хочу.

Смежные вопросы