Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
ednaldosdl
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sex Fev 14, 2014 4:51 pm

Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por ednaldosdl » Seg Out 23, 2017 10:19 pm

Bom noite, galera
primeiramente gostaria de parabenizá-los e agradecer por partilhar essas ideias incríveis do Selenium vba e todas as outras. sem mais delongas, Tentei usar a duvida do nosso amigo leandrosantto com o seguinte tópico que encontra-se resolvido. Titulo:[RESOLVIDO] Pequisa de preço Selenium Basic VBA.
Fiz todos os passos do vídeo que o Tomas Vasquez postou para sanar a duvida do nosso amigo sitado a cima e ocorreu tudo certo, porem o site que estou tentando obter os dados a tabela tem varias paginas e só obtêm os dados da primeira pagina e só mostrar os dados na Msgbox. só que eu gostaria de inserir para uma célula da planilha no lugar de mostrar na Msgbox, como eu poderia fazer isso?

segue abaixo o código que tentei:

Obs: Os dados que preciso está na tabela chamada cruzamento do site sitado abaixo como exemplo. Espero que todos consiga entender minha explicação para tentar sanar minhas duvidas

Dim driver As webdriver
Sub ExtrairTabelaDaPagina()

Set driver = New ChromeDriver
driver.Get "http://www.loteriacomj.com.br/loto/mega ... a-sena.php"
Dim tabela As WebElement
Set tabela = driver.FindElementByXPath("//*[@id=""id-tabela-cruzamento""]")

As formas que obtive exito. São as duas primeiras.
1.:
MsgBox tabela.Text 'Funcionou perfeitamente (Só que obtive os dados de apenas uma pagina)
------------------------------------------------------------------------------------------

2.:
If tabela Is Nothing Then
MsgBox "Elemento não encontrado"
Else
MsgBox "Elemento encontrado!" 'Funcionou perfeitamente

------------------------------------------------------------------------------------------

As formas que tentei inserir os dados na planilha, mas não obtive exito.

destino.Value = Worksheets("Cruzamento").Cell("A1") 'Tentativa sem exito
Destination = Sheets("Cruzamento").Range("A1") 'Tentativa sem exito (Não aconteceu nada)
Destination = Worksheets("Cruzamento").Range("A1") 'Tentativa sem exito (Não aconteceu nada)
Destination = sht_Cruzamento.Range("A1") 'Tentativa sem exito (Não aconteceu nada)

End If

driver.Quit
MsgBox "Dados transferido com sucesso!"
End Sub



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1119
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Bragança Paulista - SP

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por Mikel Silveira Fraga » Ter Out 31, 2017 7:31 am

Ednaldo, bom dia.

Cara, veja se esse post do Tomás no Blog, não lhe auxilia nessa tarefa:
- EXTRAINDO TABELAS DE PÁGINAS WEB COM O SELENIUM BASIC (Tomás Blog)

Maiores dúvidas, a disposição.


Gostou da dica? Clique no JOIA no topo da mensagem.
Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Orientações sobre o fórum, acesse aqui.

Mikel Silveira Fraga
E-mail: mikel-sf@hotmail.com | Skype: mikelsf | Linked In

Cabelo175
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Nov 30, 2017 2:36 pm

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por Cabelo175 » Qui Nov 30, 2017 2:45 pm

Boa tarde Mikel,

Para não criar outro tópico falando sobre o mesmo assunto vou aproveitar esse.
Preciso de uma ajuda por favor, pois usei o código do Tomas na minha aplicação web, onde retiro informações por CNPJ de cada cliente que tenho, porém ao fazer loop o campo destino sempre mantem o mesmo.
Set destino = ThisWorkbook.Worksheets("Plan2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)

Precisava que sempre que for recomeçar o loop, o destino seja alterado para primeira celula vazia da coluna A.
Existe alguma forma de fazer isso?



Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1119
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Bragança Paulista - SP

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por Mikel Silveira Fraga » Qui Nov 30, 2017 9:44 pm

Cabelo, boa noite e seja bem vindo ao fórum.

Cara, não sei se entendi direito, mas você em um loop e quer que toda vez que se iniciar, irá Setar o objeto destino com a última célula vazia.

Confesso que não gosto de utilizar o comando Offset, como ocorre no seu código, mas poderia ser feito algo um pouco diferente. Segue uma sugestão parecida com o que você planeja:

Código: Selecionar todos

Set destino = ThisWorkbook.Worksheets("Plan2").Cells(Rows.Count + 1, "A")
A cada vez que uma linha for preenchida e um novo loop for iniciado, o objeto destino assumirá a última célula preenchida.

Mesmo objetivo do seu comando, mas uma lógica diferente.

Caso não dê certo, tente compartilhar sua planilha ou mande o código completo do que esta tentando fazer.

Fico no aguardo. Abraços!!!!


Gostou da dica? Clique no JOIA no topo da mensagem.
Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Orientações sobre o fórum, acesse aqui.

Mikel Silveira Fraga
E-mail: mikel-sf@hotmail.com | Skype: mikelsf | Linked In

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Cabelo175
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Nov 30, 2017 2:36 pm

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por Cabelo175 » Sex Dez 01, 2017 9:00 am

Bom dia Mikel,

obrigado pela resposta...
Tentei usar o código que me informou porém deu Erro de definição de aplicativo ou definição de objeto. Estou disponibilizando a planilha, porém como é acesso ao e-CAC, utilizei certificado de um procurador e autoit para automatizar a escolha do certificado. O arquivo (Certificado Ecac.exe) seleciona o segundo certificado da lista.

OBS. O código começa a ser executado e o destino encontra a primeira celula vazia e continua até salvar a tabela na Plan2, quando ele inicia o loop novamente, a variável destino não muda o valor e salva a segunda tabela por cima da primeira.
Teste ecac.zip
Teste e-CAC
(18.67 KiB) Baixado 199 vezes



Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1119
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Bragança Paulista - SP

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por Mikel Silveira Fraga » Sáb Dez 02, 2017 11:52 am

Cabelo, boa tarde.

Cara, dei uma olhada no seu código e, mesmo sem conseguir testar, acho que as modificações abaixo podem lhe ajudar.

Faça o seguinte, mude a posição da linha abaixo:

Código: Selecionar todos

    Set destino = ThisWorkbook.Worksheets("Plan2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
Para o seguinte local:

Código: Selecionar todos

    Set destino = ThisWorkbook.Worksheets("Plan2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
    tabela.AsTable.ToExcel destino
    Set destino = Nothing 'Adicione essa linha, para limpar a variável da memória.
Acredito que essa alteração deva resolver seu problema.

Teste e nos retorne o resultado.

Abraços e excelente final de semana.


Gostou da dica? Clique no JOIA no topo da mensagem.
Esclareceu suas dúvidas? Acrescente ao título do tópico a expressão: [RESOLVIDO].
Orientações sobre o fórum, acesse aqui.

Mikel Silveira Fraga
E-mail: mikel-sf@hotmail.com | Skype: mikelsf | Linked In

Cabelo175
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Nov 30, 2017 2:36 pm

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por Cabelo175 » Seg Dez 04, 2017 7:18 am

Bom dia Mikel,

Muito obrigado pela ajuda...
o código funcionou perfeitamente, era exatamente isso que estava precisando.

obrigado mesmo.



fnpereira
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Mai 09, 2019 8:58 pm

Re: Selenium Basic VBA - Obter dados de uma tabela com varias páginas com XPath e inserir os dados na planilha

Mensagem por fnpereira » Qui Mai 09, 2019 9:12 pm

Olá amigos !!!
Tenho lido muitos topicos aqui neste forum sobre o selenium vba e tenho aprendido muito!
Porém estou tendo dificuldades em obter dados de uma tabela e copiar estes dados para o Excel.
Já consegui realizar o acesso ao site e aplicar todos os filtros para gerar a tabela, mas já fiz inúmeras tentativas de pegar estes dados e sem sucesso. Peço ajuda para concluir este processo. segue abaixo codigo vba desenvolvido. Já agradeço todo conhecimento que obtive neste forum.


Public Sub EBEC()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.addArgument ("--headless")
selenium.Start "chrome", "http://centraldetransporte.ebec-sa.com.br/"

Dim destino As Range
Dim tabela As WebElement

selenium.Open "/autenticacao"
selenium.Wait 20000
selenium.findElementById("login").Click
selenium.findElementById("login").Clear
selenium.findElementById("login").SendKeys "******"
selenium.findElementById("password").Click
selenium.findElementById("password").Clear
selenium.findElementById("password").SendKeys "****"
selenium.findElementByXPath("//button[@type='submit']").Click
selenium.Wait 15000
selenium.Select "id=time", "label=Não filtrar"
selenium.Click "id=status"
selenium.Click "xpath=(//button[@type='button'])[3]"
selenium.Click "xpath=(//button[@type='button'])[4]"
selenium.Click "xpath=(//button[@type='button'])[7]"
selenium.Click "//button[@type='submit']"
selenium.Select "name=rows", "label=100"
selenium.Wait 7000

Set tabela = selenium.findElementByXPath("//div[2]/table") --->tabela encontrada com Selenium IDE 2.91

Set destino = Range("A1")

If tabela Is Nothing Then
MsgBox "Elemento não Encontrato"
Else
MsgBox "Tabela Encontrada"
tabela.AsTable.ToExcel destino
End If

selenium.stop

End Sub



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder