Extraindo os preços de ações da BOVESPA em tempo real com Python Selenium

Felipe Mahlmeister
fmeister23-br
Published in
4 min readDec 2, 2019

Read this article in English

Você já se perguntou como seria ótimo obter em tempo real os preços de ações do mercado financeiro brasileiro de fontes confiáveis, gastando apenas alguns dólares?

Neste tutorial, mostrarei como extrair os preços das ações do mercado financeiro com Python Selenium no tradingview.com, vamos nessa !

Antes de começarmos, seria bom você ter o python instalado no seu computador e eu recomendo que você use o Jupyter Notebook para obter feedback instantâneo sobre o que está codando.

Entre em tradingview.com, selecione qualquer ação e vá para “Gráfico completo”. Nesta página, você pode ver uma linha de tendência da ação escolhida e também alguns nomes de ações:

Como estamos interessados em extrair esses dados, o tradingview oferece o download no formato csv, se você tiver uma assinatura mensal de seus serviços (atualmente US $ 15 / mês), siga as seguintes etapas para fazer o download:

Tenha certeza de que está fazendo o download de ações da bolsa
Refresh a cada minuto
1m delay

Eeeeeeee voilà, clique neste botão e faça o download do arquivo CSV

Ok, agora conseguimos fazer download do arquivo CSV que contém os preços das ações da bolsa, mas você não irá ficar 24 hrs sentado na frente do computador apertando um botão, certo? rs

Vamos automatizar estas etapas com o Selenium !

Primeiro vamos importar os pacotes e inserir nosso login/senha do tradingview.com

import time
from selenium import webdriver# Import your username and password of tradingview.com
from credentials import get_credentials
credentials = get_credentials()
username = credentials['username']
password = credentials['password']

Para a automatizar a extração dos dados nós poderíamos utilizar as seguintes bibliotecas: Scrapy, Beautiful Soup e Selenium

Porém, o botão de download do CSV faz uma requisição em javascript, o que dificulta nossa vida… sendo o Selenium nossa melhor opção !

Precisamos de um webdriver para integrar nosso código com o browser, faça o download do chromedriver neste link:

# You should download chromedriver and place it in a high hierarchy folder
chromedriver_path = "C:/webdrivers/chromedriver.exe"
# This is the generic url that I mentioned before
url = "https://www.tradingview.com/chart/GZ2VoO8U/#signin"

Abrindo seu browser

def open_browser(chromedriver_path):

chrome_options = webdriver.ChromeOptions()

preferences = {"download.prompt_for_download": False,
"download.default_directory":r"C:\Users\Felip\Documents\Projects\Trading\source\\",
"download.directory_upgrade": True,
"profile.default_content_settings.popups": 0,
"profile.default_content_setting_values.notifications": 2,
"profile.default_content_setting_values.automatic_downloads": 1
}chrome_options.add_experimental_option("prefs",preferences)

driver = webdriver.Chrome(executable_path=chromedriver_path,
chrome_options=chrome_options)
return driver

Login no site

def site_login(username,password,url,driver):
driver.get(url)
driver.find_element_by_class_name("tv-dialog__close").click()
driver.find_element_by_name('username').send_keys(username)
driver.find_element_by_name('password').send_keys(password)
driver.find_element_by_class_name('tv-button__loader').click()
time.sleep(10) # ensure the page loads (bottleneck)
return driver

Download do arquivo CSV

def get_csv(driver):
driver.find_element_by_xpath('//div[@title="Export screener data to a CSV file"]').click()

Run

driver_1 = open_browser(chromedriver_path)
driver_2 = site_login(username,password,url,driver_1)
get_csv(driver_2)

E pronto, simples assim ! Agora temos o arquivo CSV com todos os dados das ações do mercado financeiro daquele instante, tudo o que você precisa fazer agora é automatizar esta etapa para rodar este script a cada 10 segundos e construir um grande dataframe com isto, para então fazer suas análises de mercado ou colocar seu modelo de machine learning para rodar !

Se você ficou empacado ou com alguma dúvida em algum ponto ou conceito, fique à vontade para entrar em contato em qualquer rede social, farei o meu melhor para te ajudar

Não deixe de conferir o video no YouTube em que fiz passo-a-passo destas etapas !

Boa sorte em seus projetos !

Abraços

youtube video

--

--