from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome()
driver.maximize_window()
def getInputs():
global filtre
global kosul
global deger
filtre = input("Filtre giriniz: ")
kosul = input("Koşul giriniz: ")
deger = input("Değer giriniz: ")
def reset():
driver.get("https://tr.tradingview.com/screener/")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-screener-toolbar__button.tv-screener-toolbar__button--options.tv-screener-toolbar__button--filters.apply-common-tooltip.common-tooltip-fixed'))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-screener-search__reset.js-search-reset'))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "tv-screener-search__input"))).click()
def get_values():
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "tv-screener-search__input"))).send_keys(filtre)
wait = WebDriverWait(driver, 10)
dropdown_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'tv-screener-dialog__selectbox-dropdown-toggle')))
dropdown_element.click()
time.sleep(0.1)
if(kosul != ""):
options = driver.find_elements(By.CSS_SELECTOR, "span.tv-dropdown-behavior__item")
if kosul == "Küçük":
for option in options:
if option.get_attribute("data-value") == "less":
option.click()
break
elif kosul == "Küçük veya Eşit":
for option in options:
if option.get_attribute("data-value") == "eless":
option.click()
print("ok")
break
elif kosul == "Büyük":
for option in options:
if option.get_attribute("data-value") == "greater":
option.click()
break
elif kosul == "Büyük veya Eşit":
for option in options:
if option.get_attribute("data-value") == "egreater":
option.click()
break
elif kosul == "Kesişimler":
for option in options:
if option.get_attribute("data-value") == "crosses":
option.click()
break
elif kosul == "Yukarı Keser":
for option in options:
if option.get_attribute("data-value") == "crosses_above":
option.click()
break
elif kosul == "Aşağı Keser":
for option in options:
if option.get_attribute("data-value") == "crosses_below":
option.click()
break
elif kosul == "Arasında":
for option in options:
if option.get_attribute("data-value") == "in_range":
option.click()
break
elif kosul == "Dışarı":
for option in options:
if option.get_attribute("data-value") == "not_in_range":
option.click()
break
elif kosul == "Eşit":
for option in options:
if option.get_attribute("data-value") == "equal":
option.click()
break
elif kosul == "Eşit Değil":
for option in options:
if option.get_attribute("data-value") == "nequal":
option.click()
break
value = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'input[type="text"]')))
value.send_keys(deger)
time.sleep(3)
elements = driver.find_elements(By.CLASS_NAME, "tv-screener__symbol")
texts = [element.text for element in elements]
print(texts)
while True:
getInputs()
reset()
get_values()
time.sleep(20)