Как спарсить определенный текст с сайта Python?
В общем, столкнулся с проблемой. Мне нужно спарсить количество просмотров с сайта "https://pcstonks.ru/note/".
Нужно получить только "61541" при помощи библиотек beautiful-soup и requests.
Я новичок в парсинге, поэтому это может быть глупый вопрос. Буду рад любой помощи.

r = requests.get('https://pcstonks.ru/note/qDhRaP', headers=headers)
soup = BeautifulSoup(r.text, 'lxml')
div = soup.select('div[class="fs-6 text-end"]')[0]
views = div.text.strip()
print(views)
этот код выводит
61541
Скачать
Поделиться
Ответы (2 шт):
Быстрый ответ
Используйте следующий селектор: div[class="fs-6 text-end"] button:first. Поскольку выбранный div содержит еще и идущие дальше кнопки (лайк, дизлайк, поделиться и т.д.). А так будет выбрана конкретно первая кнопка, содержащая нужный текст.
Некоторые рекомендации
Разметка сайта может поменяться, что делает ваш код не слишком долговечным. Куда более долговечным решением может быть использование селекторов не по первым увиденным атрибутам, а по некоторой семантике. Например, здесь fs-6 text-end - классы, отвечающие за отображение элемента, но никак не указывающие на его смысл и содержимое. А вот вышележащий div#noteButtons звучит уже как нечто более устойчивое. С самим индикатором просмотров посложнее - его можно охарактеризовать тем, что текст внутри является числом, а также иконкой глаза. Иконка не сильно устойчива, но это лучшее, что имеем.
К сожалению, для такого не подойдут css-селекторы ввиду их ограниченной функциональности. Я бы рекомендовал использовать xpath, но для этого придется использовать lxml напрямую, BeautifulSoup такое не поддерживает. Получится следующий путь - //*[@id='noteButtons']//button[.//i[contains(@class, 'fa-eye')] and string(number(text()))!='NaN'].
import requests
from bs4 import BeautifulSoup
response = requests.get("https://pcstonks.ru/note/qDhRaP")
soup = BeautifulSoup(response.content, "html.parser")
total_views = soup.select_one("button.me-1").get_text(strip=True)
print(total_views) # 61749