Уточнение этого тега <a>с символом :: для веб-скрапинга - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в использовании bs4 и webscraping. Я пытаюсь очистить сайт stats.nba.com. Проблема, с которой я столкнулся, заключается в том, что я не могу собрать имена игроков и их очки для каждой категории. Я проверил элемент, и он появляется, когда я проверяю его на веб-странице. Но когда я очищаю его с помощью bs4, он показывает мне нужный тег:

<a ng-href="/player/{{::player.PLAYER_ID}}/" title="View Stats Profile" aria-labelledby="leaders_daily_players__{{ ::category.name }}">{{::player.PLAYER_NAME}}</a>

Все имя игрока заменено на ":: player.PLAYER_NAME". Я пытался посмотреть, что символ ::, но я не мог понять, почему. Может кто-нибудь объяснить, что делает "::" и как я смогу почистить эту информацию с сайта?

1 Ответ

0 голосов
/ 10 мая 2018

Указанный веб-сайт динамически генерирует свой контент с помощью Angular.Angular запускается движком JavaScript в браузере и заменяет эти заполнители :: player.PLAYER_ID фактическими данными, которые загружаются асинхронно.

BeautifulSoup по умолчанию просто загружает HTML и не имитирует полнофункциональный браузер.Он не выполняет часть JavaScript, таким образом, заполнители не заменяются фактическими данными.

Вы можете попробовать другой подход для выполнения JavaScript, который задокументирован в https://pythonprogramming.net/javascript-dynamic-scraping-parsing-beautiful-soup-tutorial/

Другой подходможет быть использовать существующие проекты API: https://github.com/seemethere/nba_py/wiki/stats.nba.com-Endpoint-Documentation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...