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.

Traidingview Veri Çekme banada yardımcı olabilir misin benzer bir sorun

Hocam bs4’ün buradaki kullanım amacı nedir? Selenium ile kullanılması gereken modüllerden midir?

class’ı tv-symbol-price-quote__value js-symbol-last olan div’in içerisindeki text’i almak için kullandık. Aslında get_content fonksiyonunun döndürdüğü sayfa kaynağı bir string veri. Yani BeautifulSoup olmadan da istediğimiz text’i elde edebilirdik ama bu zahmete girmeye gerek yok, BeautifulSoup bunu kolayca yapabilmemiz için bize araçlar sunmuş.

Amacınıza göre değişir

1 Beğeni

peki python ile tradingview de yukledigimiz indikatör al sat emri verdiği noktaları python da çekebilir miyiz? bot yazmak için