webdriver.get(url) with problems accessing B3 website consistently

Asked

Viewed 61 times

-2

I’m trying to access the B3 website using Selenium, but I can’t consistently access a specific URL. Sometimes it loads normally, but others the page I try to open keeps loading for a while and then return a page with message "System Unspeakable".

The code I’m trying to run, with the URL in question:

nav = webdriver.Edge()

nav.implicitly_wait(10)

nav.get('http://www.b3.com.br/pt_br/produtos-e-servicos/negociacao/renda-variavel/empresas-listadas.htm')

What can I do to be able to access this URL consistently?

  • This is a problem of the B3 server and not its code.

  • It could not be some form of attempt to protect their URL against automatic accesses as well?

  • I believe not - I find the same behavior when trying to open the link directly in my browser.

  • Hmm, I get it. Every time I tried to access it manually, it worked for me, but now I went to test it again and I saw that it was a problem. Thank you :)

1 answer

-2

Have to check if the Wait of (10) would be seconds, if it is ta very little time to load the site can put something around 60s at least.

Here in my git I make a connection to extract data from the B3 in python https://github.com/eduardojc/acoesIbov

from urllib.request import urlopen
from datetime import datetime
from pandas import DataFrame
import json
import os.path


# array de ações a serem avaliadas
aval = ['BCFF11','BRCR11','HGRU11','ENAT3','ITSA4','KNRI11','MXRF11','SAPR4','TAEE4','TIET4','XPML11']

# inicia uma lista.    
acao = []

# percorrer as ações coletando os JSON's
print("Atualizando: \n")
for res in range(len(aval)):
    url = urlopen('http://cotacao.b3.com.br/mds/api/v1/instrumentQuotation/'+aval[res])
    result = url.read()
    data = json.loads(result)
    
    if(data['BizSts']['cd'] == 'OK'):
        # Ramos do JSON a serem analisados.
        ramo1 = data['Trad'][0]['scty']
        ramo2 = ramo1['SctyQtn']
        print(ramo1['symb'])
    # Verifica se tem cotação para a ação selecionada

        
        # Pega a data do DIC do JSON da ação.
        dia = data['Msg']['dtTm']
        # Converter str em data e mudar o formato para Brasileiro
        dia = datetime.strptime(dia, "%Y-%m-%d %H:%M:%S").strftime('%d/%m/%Y %H:%M:%S')
        
        # Percorrer o DIC e atribuir as variáveis:
        # name = Nome da Ação, minPr = Preço Min
        # maxPr = Preço Max, avrPr = Preço Médio
        # curPr = Preço Atual
        name = ramo1['symb'] 
        minPr = ramo2['minPric']
        maxPr = ramo2['maxPric']
        avrPr = ramo2['avrgPric']
        curPr = ramo2['curPrc']
        
        #depois do loop adiciona a busca ao array de 'acao' pelo método append
        acao.append([dia,name,minPr,maxPr,avrPr,curPr])
        
## Transformamos os dados em um DATAFRAME para inserir o Header
## Em Seguida verificamos se o Arquivo analise.txt Existe,
## Se não existir ele cria um nova arquivo com as cotações "hora atual"
## Caso existir ele atualiza o arquivo com as cotações da "hora atual"

df = DataFrame(acao,columns=['Data','Acao','Min','Max','Med','Atual'])
file = 'D:\\Analise\\analise.csv' #caminho onde será salvo o arquivo.

print('\n')
if os.path.isfile(file):
    # Abre o arquivo e salva em TXT
    df.to_csv(file, header=None, index=None, sep=',', mode='a')
    print("Arquivo Atualizado!")
else: 
    df.to_csv(file, header=True, index=None, sep=',', mode='w+')
    print("Arquivo Criado!")

Browser other questions tagged

You are not signed in. Login or sign up in order to post.