Вы можете изменить find_all
для соответствия текста с регулярным выражением:
jobs = soup.find_all('p',text=re.compile(r'|'.join(keywords)))
Таким образом, полный код будет:
import requests
import re
from bs4 import BeautifulSoup as Bsoup
keywords = ["KI", "AI", "Big Data", "Data", "data", "big data", "Analytics", "analytics", "digitalisierung", "ML",
"Machine Learning", "Baumeisterarbeiten"]
url = "https://www.auftrag.at//tenders.aspx"
data = requests.get(url, timeout=5)
soup = Bsoup(data.text, 'html.parser')
# jobs = soup.find_all('div', {'class': 'article'})
jobs = soup.find_all('p',text=re.compile(r'|'.join(keywords)))
print(len(jobs))
for word in jobs:
print(word)
Мой вывод здесь дает мне136 результатов
РЕДАКТИРОВАТЬ:
Я бы добавил границы слов, чтобы избежать пропущенного соответствия, как KILL
для KI
Так что янаписал бы это регулярное выражение:
jobs = soup.find_all('p',text=re.compile(r'\b(?:%s)\b' % '|'.join(keywords)))