wolverine777
@wolverine777

Почему не останавливается цикл while во время скрэйпинга?

Привет, мне нужно вытащить всех авторов со всех страниц с учебного сайта http://quotes.toscrape.com/

Я хочу это сделать при помощи while- с учетом того что я не знаю конечное число страниц.

Вот этот код выводит мне желаемое но почему-то не выходит из цикла, притом что страниц то всего 10 - продолжает скрэйпить несуществующее... В чем дело? Спасибо.

i = 1
while(True):
    try:
        url = "http://quotes.toscrape.com/page/{}/".format(i)
            
        result = requests.get(base_url.format(i))
        soup = bs4.BeautifulSoup(result.text,"lxml")

        #print page url
        for item in soup.select('.author'):
             print(item.text)
                    


        #increase page number
        i += 1
    except:
        break
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Если элемент не был найден - исключение не выкидывается.

Так чтоsoup.select('.author') возвращает просто None, никакой ошибки в этом нет. Проверяйте содержимое soup.select('.author') на None.

authors = soup.select('.author')

if authors:
    for author in authors:
        print(author.text)
else:
    break
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Kardfox
Программист на Python с четырехлетним опытом.
Сама-то страница существует, а если soup не находит атрибута .author или что это - он не выдает ошибки.
Тебе нужно всегда проверять soup на отсутствие атрибутов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы