Как такое осуществить?
Смотря что такое “обычный текст” и “обычный поиск”…
Пусть в переменной line находится строка, которую ищем, а в переменной html - содержимое html-страницы (со всеми тегами и прочей пакостью).
1) В самом простом варианте можно использовать простой поиск подстроки.
ind = html.find(line)
if ind >= 0:
# Здесь делаем нужные действия, когда строка найдена
Если содержимое line присутствует в явном виде, то этого хватит. Но есть подозрение, что тебя такой вариант не устроит, ведь между символами подстроки могут оказаться какие-то теги.
2) Можно попробовать перевести html-страницу в (почти) чистый текст:
from bs4 import BeautifulSoup
soup=BeautifulSoup(html)
text = soup.text
ind = text.find(line)
if ind >= 0:
# Здесь делаем нужные действия, когда строка найдена
3) Можно ещё подстраховаться на случай, когда между словами подстроки встречается больше одного пробела или переходы на следующую строку. Для этого и выделенный из html текст, и подстроку надо разбить на списки слов, а затем соединить обратно.
line = ' '.join(line.split())
text = ' '.join(text.split())
4) Часто при текстовом поиске приходится приводить все символы в тексте и в искомой подстроке к нижнему регистру, чтобы не зависеть от того, где кто-то поставил большую букву, а где нет.
line = line.lower()
text = text.lower()