Как сделать чтобы выводилось несколько значений, а не одно?
Я делаю парсер сайта ВКонтакте, вывожу текст поста и сколько на нём просмотров. При закуске скрипта выводятся значения последнего поста и всё, хотелось бы выводить значения всех постов на странице. Подскажите как это сделать. Ниже сам код.
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)
Что пробовать не знаю, но хотелось бы видеть значения всех постов.
Ответы (1 шт):
Автор решения: Teslajke
→ Ссылка
Чтобы найти все объекты соответствующие параметрам вместо 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)