РЕДАКТИРОВАТЬ: Таким образом, 'j' является строкой слов, поступающих из модуля webscraper, поэтому вам необходимо преобразовать их в список слов, чтобы проверить, принадлежит ли какое-либо слово к списку исключений или нет.
Вам также нужно «опустить» все слова в списке исключений перед сравнением. Сделайте это списком и преобразуйте их в строчные слова из списка.
Преобразование обоих этих списков в наборы дает вам преимущество использования операций набора для сравнения.
Сделайте пересечение их обоих и проверьте, есть ли что-нибудь общее. Если его нет, напечатайте его.
Просто удалите строку:
if any(s not in j.strip().lower() for s in exclude):
и используйте:
if not set(word.strip().lower().split()) & set(exclude):
В основном в коде:
from bs4 import BeautifulSoup
import requests
url = 'https://www.finn.no/bap/forsale/search.html?category=0.93&product_category=2.93.3904.69&sub_category=1.93.3904'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
exclude = ['UTLEIE', 'Utleie', 'utleie', 'NIKON', 'Nikon', 'nikon' 'Leica', 'LEICA', 'leica', 'sony', 'SONY', 'Sony', 'Pentax', 'PENTAX', 'pentax', 'RF', 'iphone', 'android', 'Magic', 'MAGIC', 'magic']
exclude = [x.lower() for x in exclude]
def check_status(func):
def verify(*args, **kwargs):
if page.status_code != 200:
return f'Error code: {page.status_code}'
return func(*args, **kwargs)
return verify
@check_status
def scrape_website():
for i in soup.find_all('article', {'class': 'ads__unit'}):
for word in i.find('a', {'class': 'ads__unit__link'}):
if not set(word.strip().lower().split()) & set(exclude):
print(word.strip())
scrape_website()