Работа со строками в условии в Python
Код открывает браузер, кликает на кнопку "accept" во всплывающем баннере. Затем кликает по каждой стране, тем самым открывая списки лиг, а затем окрывает каждую ссылку лиги в новой вкладке (ссылки такого типа: https://www.flashscore.com/football/algeria/coupe-de-la-ligue).
Но мне нужно чтоб открывалась не каждая ссылка, а только та, под которую не попадают исключения и если if "cup" in league_hrefs: continue работает отлично и открываются все ссылки, кроме ссылок со строкой "cup", то как мне сделать так, чтоб не открывалась ссылка с лигой из excluded_leagues?
if excluded_leagues in league_hrefs:
continue
не работает.
from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://www.flashscore.com"
driver.get(url)
driver.find_element_by_id("onetrust-accept-btn-handler").click()
time.sleep(2)
for country in driver.find_elements_by_css_selector(".lmc__block"):
if country.is_displayed():
country.click()
for league in driver.find_elements_by_css_selector(".lmc__templateHref"):
excluded_leagues = ["cup", "u21", "coupe"]
league_hrefs = str(league_hrefs.get_attribute("href"))
if "cup" in league_hrefs:
continue
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[1])
driver.get(f"{fff}")
driver.close()
driver.switch_to.window(driver.window_handles[0])
driver.close()
Ответы (3 шт):
Когда вы указываете такое условие, вы проверяете содержание самого объекта списка excluded_leagues в league_hrefs
if excluded_leagues in league_hrefs:
continue
Скорее всего, вам нужно проверить, содержится ли только какой-либо элемент из excluded_leagues в league_hrefs.
Это можно сделать через вложенный цикл:
for elem in excluded_leagues:
if elem in league_hrefs:
# действия при наличии совпадений
break
Если я правильно понял, вам нужно проверить не отсутствие совпадений по списку. Это можно сделать циклом:
need_break = False
for c in excluded_leagues:
if c in league_hrefs:
need_break = True
break
if need_break:
continue
Или через пересечения множеств:
if len(set(league_hrefs).intersection(set(excluded_leagues))) > 0:
continue
Можно проверить буквально в одну строку:
if any(exclude in league_hrefs for exclude in excluded_leagues):
continue