Очистка веб-сайта, на котором есть таблица, но кнопка «Далее» в таблице не изменяет URL-адрес

#python #web-scraping #beautifulsoup #selenium-chromedriver

Вопрос:

Я хотел очистить эту ссылку и получить всю таблицу игроков :- https://www.nba.com/stats/leaders/?StatCategory=FG3Mamp;PerMode=Totalsamp;Season=2015-16amp;SeasonType=Regular Season

Здесь, если вы нажмете на кнопку далее в таблице, содержимое таблицы изменится, но URL-адрес вверху не изменится. Но у кнопки нет тега кнопки. Это выглядит так:-

 <a class="stats-table-pagination__next" href="" alt="Next Page" ng-click="nav(1)">       
    <i class="fa fa-angle-right" aria-hidden="true"></i>
</a>

 

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

Ответ №1:

  1. Вы можете использовать google chrome в режиме разработчика и найти файл json, содержащий все данные из изображения, которые вы можете видеть
  2. Затем перейдите на вкладку Сеть и обновите ссылку, а затем перейдите на вкладку xhr, где вы найдете множество ссылок, одна из которых содержит информацию об игроках
  3. после получения этих точных данных нажмите на эту ссылку, скопируйте адрес и используйте requests модуль, получите данные json и извлеките информацию
 import requests
res=requests.get("https://stats.nba.com/stats/leagueLeaders?LeagueID=00amp;PerMode=Totalsamp;Scope=Samp;Season=2015-16amp;SeasonType=Regular Seasonamp;StatCategory=FG3M")
data=res.json()
for i in range(len(data['resultSet']['rowSet'])):
    print(data['resultSet']['rowSet'][i][2])
 

Выход:

 Stephen Curry
Klay Thompson
James Harden
Damian Lillard
..
 

Изображение:

введите описание изображения здесь

Комментарии:

1. Это действительно помогло, спасибо. Я новичок в веб-скребке и хотел попробовать этот веб-сайт НБА, но ваш способ наиболее эффективен. Я просто хочу спросить , можно ли использовать этот метод, когда вы зашли на вкладку «Сеть», нашли файл json и использовали его для извлечения данных…..может ли этот метод также использоваться на большинстве веб-сайтов, и как вы узнали об его использовании таким образом?

2. Да, мы можем использовать этот метод, если данные динамичны и данные представлены API, поэтому мы можем использовать его, но он не всегда присутствует на многих веб-сайтах, поэтому для этого нам нужно изменить подход!