Jump to content
Fórum Script Brasil
  • 0

Captura de dados web para GoogleSheets quando não funciona IMPORThtml, nem IMPORTxml, nem GoogleFINANCE


Question

Será que vocês conseguiriam me ajudar?

Estive há meses buscando um código que substituísse a função IMPORThtml.

Seguinte: Faço uma captura de dados de ativos financeiros de alguns sites. O mais trivial seria usar a função GOOGLE FINANCE, certo?

Errado! O tipo de ativos que monitoro não tem cobertura do Google Finance (opções de ações: call e put)

A segunda opção seria usar o IMPORThtml ou IMPORT XML, mas depois de muito pesquisar em blogs, fóruns, ect, etc,  descobri que o google "meio que sabota" essas duas funções e bloqueiam, de modo que sempre retornam erro.

Então cheguei até um forum, o Stack Overflow, onde encontrei um especialista que me ajudou com esse código onde finalmente consegui para fazer o google sheets buscar o valor.

function ultimoValorAdvfn()
const url = 'https://br.advfn.com/bolsa-de-valores/bovespa/vvarq170-ex-17-VVARQ170/cotacao';
const html = UrlFetchApp.fetch(url).getContentText();
return html.match(/class="PriceTextUp">(.*?)</)[1].trim();
 

Só que percebi um porém:

O código funcionou mas eu queria rodá-lo com outro site, no qual a URL da página de cada ativo é muito menor e mais fácil de montar.
 
Para eu montar uma função replicável para várias células ou vários ativos diferentes, ao mesmo tempo, tem um pedaço da URL
que ferra tudo.
Ex: Para o ativo VVARQ170 seria o pedaço mais importante da URL seria "... /vvarf130-ex-13-VVARf130/..",
só que esse pedaço " ex-13" não é constante para o ativoVVARF130
Hoje pode ser "ex-17", amanhã pode ser "ex-131" ou "ex-132"
Então se eu montasse a URL a partir do códigos dos ativos que estão em uma coluna, eu teria que ter em outra célula qual o "ex" daquela ativo.
 
Se fosse só um ou 2 ativos, beleza, eu faria na unha, o problema é que são pelo menos 20 em média, e vão sendo substituídos
conforme vão sendo vendidos e comprados ao longo do mês.
 
Tem um outro site que consulto que é o opcoes.net. onde a construção do link muito mais fácil
Por exemplo: Para consultar o mesmo ativo,o link é simplesmente opcoes.net/ VVARF130
 
A maior dificuldade é encontrar o endereçamento do código HTML do objeto que preciso (último valor de cotação).
 
Segue uma tentativa de representação da parte da  página que preciso capturar.
  VVARF130 - Cotação não ajustada               ____VVARF130 - Volatilidade implícita ____VVAR3 - Cotação não ajustada
Min Pri Med Ult Max Negócios Vol. Fin. ____Min Pri Med Ult Max ____Min Abe Med Ult Max
21/05/2021   4,94 5,05 5,12 5,25 5,25 8 62.029,00 ____         ____11,73 11,92 11,90 11,87 12,14
20/05/2021 4,95 4,97 5,03 5,05 5,12 98 1.219.794,00 ____208,00 293,00 271,93 312,00 349,25 ____11,91 12,05 11,97 11,91 12,13
 
Então ficaria assim:
function ultimoValorAdvfn()
const url = 'https://opcoes.net.br/VVARF130';
const html = UrlFetchApp.fetch(url).getContentText();
return html.match(
/?????="??????????" > ???????.trim();
 
Esse endereçamento dos objetos referentes aos valores em vermelho  que não consigo buscar.
Mesmo copiando o Xpaht, não consigo.
 
Anexei os prints das páginas

Desde já muito obrigado pela atenção!

tela opções.net.jpg

tela advfn.jpg

Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149405
    • Total Posts
      645894
×
×
  • Create New...