Не могу собрать данные со всех страниц
Пытаюсь собрать данные с сайта, где нужно вручную переходить на следующую страницу. Но у меня собираются данные даже не всегда со всей первой страницы.
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
→ Ссылка
- У вас result с атрибутом .content выдает байтовую строку, соответственно бс не может найти требуемые теги
- range(0, 500, 25) - 25 означает что вы будете идти по страницам 0 - 25 - 50 и т.д., а не по каждой
- На сайте вроде как 400 страниц
- 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]