Я собираю данные NFL о пасах за период с 1971 по 2019 год. Я смог очистить данные на первой странице каждого года, используя этот код:
# This code works:
passingData = [] # create empty list to store column data
for year in range(1971,2020):
url = 'https://www.nfl.com/stats/player-stats/category/passing/%s/REG/all/passingyards/desc' % (year)
response = requests.get(url)
response = response.content
parsed_html = bsoup(response, 'html.parser')
data_rows = parsed_html.find_all('tr')
passingData.append([[col.text.strip() for col in row.find_all('td')] for row in data_rows])
На первой странице за каждый год есть только 25 игроков, и примерно 70-90 игроков каждый год выбрасывают пропуск (таким образом, в каждом году на подстраницах находится от 3 до 4 страниц данных об игроках). Проблема возникает, когда я пытаюсь очистить эти подстраницы. Я попытался добавить еще один подцикл, который извлекает href каждой ссылки на следующую страницу и добавляет к базовому URL-адресу, который находится в классе div 'nfl-o-table-pagination__buttons'. >
К сожалению, не могу добавить в список passData с первой страницы. Я попытался сделать следующее, но в строке subUrl произошла ошибка «Index Out of Range Error».
Я все еще новичок в парсинге веб-страниц, поэтому, если моя логика неверна, дайте мне знать. Я подумал, что могу просто добавить данные подстраницы (поскольку структура таблицы такая же), но, похоже, ошибка возникает, когда я пытаюсь перейти из:
https://www.nfl.com/stats/player-stats/category/passing/%s/REG/all/passingyards/desc
на вторую страницу, URL которой:
https://www.nfl.com/stats/player-stats/category/passing/2019/REG/all/passingYards/DESC?aftercursor=0000001900000000008500100079000840a7a000000000006e00000005000000045f74626c00000010706572736f6e5f7465616d5f737461740000000565736249640000000944415234363631343100000004726f6c6500000003504c5900000008736561736f6e496400000004323031390000000a736561736f6e5479706500000003524547f07fffffe6f07fffffe6389bd3f93412939a78c1e6950d620d060004
for subPage in range(1971,2020):
subPassingData = []
subUrl = soup.select('.nfl-o-table-pagination__buttons a')[0]['href']
new = requests.get(f"{url}{subUrl}")
newResponse = new.content
soup1 = bsoup(new.text, 'html.parser')
sub_data_rows = soup1.find_all('tr')
subPassingData.append([[col.text.strip() for col in row.find_all('td')] for row in data_rows])
passingData.append(subPassingData)
Спасибо за помощь.