Предполагая, что next_page
возвращает что-либо, проблема в том, что вы пытаетесь сделать одно и то же дважды дважды, но ни одно из них не выполняется должным образом:
1.) Вы пытаетесь указать d
на следующую страницу, и все же в начале цикла вы снова назначаете d
на начальную страницу.
2.) Вы пытаетесь назначить start+=20
для следующей страницы, но вы 'не ссылаясь на start
в какой-либо части вашего кода.
Таким образом, у вас есть два способа решения этой проблемы:
1.) Переместите назначение d
за пределы цикла иудалите объект start
в целом:
# start=20
# You don't need start because it's not being used at all
# move the initial d assignment outside the loop
d = soup(requests.get('http://www.schulliste.eu/type/gymnasien/?bundesland=&start=20').text, 'html.parser')
while True:
# rest of your code
if next_page:
d=next_page.get('href')
# start+=20
# Again, you don't need the start any more.
else:
break
2.) Нет необходимости переназначать d
, просто укажите start
в вашем URL в начале цикла и удалите присвоение d
вif next_page
:
start=20
while True:
d = soup(requests.get('http://www.schulliste.eu/type/gymnasien/?bundesland=&start={page_id}'.format(page_id=start).text, 'html.parser')
# rest of your code
if next_page:
# d=next_page.get('href')
# this d assignment is redundant as it will get reassigned in the loop. Start is your key.
start+=20
else:
break