Не могу собрать данные со всех страниц

Пытаюсь собрать данные с сайта, где нужно вручную переходить на следующую страницу. Но у меня собираются данные даже не всегда со всей первой страницы.

for i in range(0, 500, 25):
url = f'https://www.livelib.ru/reviews~{i}'

review_page = requests.get(url)
result = review_page.content
soup = BeautifulSoup(result, 'lxml')
reviews_marks = [soup.find(class_='lenta-card__rating').find('span').text]

После того, как код выполняется я получаю 21-22 элемента в список. И код либо просто выполняется без ошибок. Либо с исключением - 'NoneType' object has no attribute 'find'. Но даже при таком исключении какие-то данные успевают собраться.


Ответы (1 шт):

Автор решения: Artem Filippov
  1. У вас result с атрибутом .content выдает байтовую строку, соответственно бс не может найти требуемые теги
  2. range(0, 500, 25) - 25 означает что вы будете идти по страницам 0 - 25 - 50 и т.д., а не по каждой
  3. На сайте вроде как 400 страниц
  4. soup.find(class_='lenta-card__rating') выдаст вам только первую карточку

Это должно вам помочь:

for i in range(400):
    url = f'https://www.livelib.ru/reviews~{i}'
    review_page = requests.get(url)
    soup = BeautifulSoup(review_page.text, 'lxml')
    reviews_marks = soup.find_all(class_='lenta-card__rating')
    reviews_marks = [i.find('span').text for i in reviews_marks]
→ Ссылка