В общем, я рекомендую уделить больше внимания именованию переменных. Мне нравится, как вы пытались напечатать заголовки историй. Строка if any(lijst in s for s in a)
не делает то, что, как вы думаете, должна: вместо этого вам нужно перебирать каждое слово в одном h2. Функция any
- это просто сокращение для следующего:
def any(iterable):
for element in iterable:
if element:
return True
return False
Другими словами, вы пытаетесь увидеть, есть ли весь список в элементе h2, что никогда не будет истинным. Вот пример исправления.
import requests
from bs4 import BeautifulSoup
url = 'https://www.nytimes.com'
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
h2s = soup.findAll("h2", class_="esl82me0")
for story_heading in h2s:
print(story_heading.contents[0])
keywords = ["trump", "Trump", "Corona", "COVID", "virus", "Virus", "Coronavirus", "COVID-19"]
number = 0
run = 0
for h2 in h2s:
headline = h2.text
words_in_headline = headline.split(" ")
for word in words_in_headline:
if word in keywords:
number += 1
print("\nTrump or the Corona virus have been mentioned", number, "times.")
Вывод
Trump or the Corona virus have been mentioned 7 times.