Как сделать чтобы выводилось несколько значений, а не одно?

Рейтинг: 0Ответов: 1Опубликовано: 08.04.2023

Я делаю парсер сайта ВКонтакте, вывожу текст поста и сколько на нём просмотров. При закуске скрипта выводятся значения последнего поста и всё, хотелось бы выводить значения всех постов на странице. Подскажите как это сделать. Ниже сам код.

import requests
from bs4 import BeautifulSoup

url = "https://vk.com/prukl"

response = requests.get(url)
bs = BeautifulSoup(response.text, "lxml")
post = bs.find('div', 'pi_text')
views = bs.find('span', 'Socials__count Socials__viewsCount')
print(post.text, '-', views.text)

Что пробовать не знаю, но хотелось бы видеть значения всех постов.

Ответы

▲ 0

Чтобы найти все объекты соответствующие параметрам вместо find мы используем findAll.

post = bs.findAll('div', 'pi_text')

Это будет лист объектов. Чтобы получить их текст используем метод getText().

text_list = [text.getText() for text in post]
print(text_list)

Вот весь Ваш подправленный код:

import lxml
import requests
from bs4 import BeautifulSoup

url = "https://vk.com/prukl"

response = requests.get(url)
bs = BeautifulSoup(response.text, "lxml")
post = bs.findAll('div', 'pi_text')
views = bs.find('span', 'Socials__count Socials__viewsCount')
text_list = [text.getText() for text in post]
print(text_list)