Python ile tradingview den veri çekmek


Merhaba arkadaşlar pythona tradingview sitesinden anlık döviz,hisse verilerini cekmeye çalışıyorum. Fakat attığım ekran görüntüsünde span etiketleri arasındaki veriyi çekemedim. Yardımcı olursanız sevinirim. Şimdiden hepinize teşekkürler.

Merhaba;

İlgili site, verileri Javascript ile dinamik olarak yüklediği için siz istek attığınız anda henüz rakamlar yüklenmemiş oluyor. Birkaç saniye beklemeniz gerek. Bunun için en sağlıklı yöntem Selenium gözüküyor. Sayfayı tamamen yüklediğinde bir sayfa kaynağını return edebiliyorsunuz.

Bir örnek hazırladım:

from selenium import webdriver
from bs4 import BeautifulSoup

def get_content(url):
    driver = webdriver.Chrome(executable_path="chromedriver")
    driver.get(url)
    return driver.page_source

def parse(content):
    bs = BeautifulSoup(content, "html.parser")
    return bs.find("div", attrs={"class":"tv-symbol-price-quote__value js-symbol-last"}).text

if __name__ == "__main__":
    print(f"EUR/TRY : {parse(get_content('https://tr.tradingview.com/symbols/EURTRY/'))}")

Bu şekilde rakam bilgisine ulaşabiliyorsunuz. Açılan tarayıcı penceresini görmek zorunda değilsiniz. Dilerseniz tarayıcı seçeneklerine ‘headless’ argümanını ekleyerek tarayıcı penceresini gizleyebilirsiniz. Kodlarda şu değişiklikleri yaparsanız tamamdır:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup

def get_content(url):
    options = Options()
    options.add_argument('--headless')
    driver = webdriver.Chrome(executable_path="chromedriver",options=options)
    driver.get(url)
    return driver.page_source

def parse(content):
    bs = BeautifulSoup(content, "html.parser")
    return bs.find("div", attrs={"class":"tv-symbol-price-quote__value js-symbol-last"}).text

if __name__ == "__main__":
    print(f"EUR/TRY : {parse(get_content('https://tr.tradingview.com/symbols/EURTRY/'))}")
1 Beğeni

Pardon söylemeyi unuttum, Selenium’un bu işi yapması için öncelikle kullanacağınız tarayıcının driver’ını edinmesi gerek. Şuradan sisteminize uygun olan Chrome driver’ını indirebilirsiniz. İndirildikten sonra yukarıdaki kodları içeren dosya ile aynı dizine taşıyın.

Çook teşekkür ederim

Rica ederim, iyi çalışmalar.