Как получить конкретный текст в методе sou.find на python? - PullRequest
0 голосов
/ 14 октября 2019

У меня много проблем с попыткой удалить сайт, когда код CSS все одинаковый. Я все еще изучаю метод sou.find и то, что я могу с ним сделать. Проблема в том, что на веб-странице есть несколько строк CSS-кода с <span class="list-quest", и когда я использую soup.find(class_='list-quest'), например, я получу результат только в верхней части страницы, которая использует тот же код CSS. Есть ли способ получить точную конкретную строку кода? Возможно, используя Born [dd-mm-yyyy]? Но, к сожалению, я не знаю, как использовать конкретное ключевое слово, например, для Python, чтобы найти его.

<span class="list-quest">Born [dd-mm-yyyy]:</span>

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Возможно, с помощью bs4 4.7.1 + можно будет использовать

item = soup.select_one('span.list-quest:contains("Born ")')
if item is not None: print(item.text)
0 голосов
/ 14 октября 2019

Используя регулярное выражение в атрибуте текста:

Регулярное выражение:

Born \d{2}-\d{2}-\d{4}:

Код Python:

from bs4 import BeautifulSoup
import re

text = '<span class="list-quest">Born 01-01-2019:</span>'
soup = BeautifulSoup(text,features='html.parser')
tag = soup.find('span',attrs={'class':'list-quest'} , text=re.compile(r'Born \d{2}-\d{2}-\d{4}'))
print(tag.text)

Демо: Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...