Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Download em Lote de Faturas de Energia com Selenium VBA
Download em Lote de Faturas de Energia com Selenium VBA
Prezados,
Quero agradecer desde já a enorme contribuição do Tomaz, pois através dele conheci o Selenium, que aliado ao VBA excel me ajudará em muitos projetos. No entanto gostaria de instigar os entusiastas destas ferramentas a me ajudarem a resolver o dilema de um projeto, que logicamente será amplamente divulgada de modo a contribuir com os projetos desta comunidade.
Desenvolvi uma rotina em VBA no excel para fazer download de várias faturas de energia do site da fornecedora de energia em SC, a CELESC, já que faço análise dos gastos de nossas unidades. Com o Selenium facilitou muito. As faturas que farei download, uma vez acessadas no site, acham-se no formato PDF. O trabalho de fazer download até que é tranquilo, a grande sacada seria, se eu conseguisse extrair os dados desta fatura para jogar na planilha, assim nem precisaria fazer o download.
E aí alguma idéia?
Quero agradecer desde já a enorme contribuição do Tomaz, pois através dele conheci o Selenium, que aliado ao VBA excel me ajudará em muitos projetos. No entanto gostaria de instigar os entusiastas destas ferramentas a me ajudarem a resolver o dilema de um projeto, que logicamente será amplamente divulgada de modo a contribuir com os projetos desta comunidade.
Desenvolvi uma rotina em VBA no excel para fazer download de várias faturas de energia do site da fornecedora de energia em SC, a CELESC, já que faço análise dos gastos de nossas unidades. Com o Selenium facilitou muito. As faturas que farei download, uma vez acessadas no site, acham-se no formato PDF. O trabalho de fazer download até que é tranquilo, a grande sacada seria, se eu conseguisse extrair os dados desta fatura para jogar na planilha, assim nem precisaria fazer o download.
E aí alguma idéia?
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Download em Lote de Faturas de Energia com Selenium VBA
Ander, bom dia e seja bem vindo ao fórum.
Cara, a ideia é interessante, mas é necessário mais detalhes. Existe algum link do site, com as informações de uma dessas faturas, para analisarmos a estrutura da página? Na própria página, já existe esses valores?
Se as informações estiverem contidas em um elemento Html (table, input, div, etc), com certeza da pra capturar essas informações diretamente do site, utilizando o Selenium.
Aguardo mais informações.
Abraços.
Cara, a ideia é interessante, mas é necessário mais detalhes. Existe algum link do site, com as informações de uma dessas faturas, para analisarmos a estrutura da página? Na própria página, já existe esses valores?
Se as informações estiverem contidas em um elemento Html (table, input, div, etc), com certeza da pra capturar essas informações diretamente do site, utilizando o Selenium.
Aguardo mais informações.
Abraços.
Re: Download em Lote de Faturas de Energia com Selenium VBA
Olá Mikel, obrigado pelas boas vindas e por ajudar-me nesta questão.
Bem o problema é que teria que dar-lhe acesso a senha, e trata-se do sistema indústria de SC, FIESC.
Farei o seguinte, enviarei algumas informações e você me diz do que precisa. Primeiro vou te enviar o que já consegui fazer com o SELENIUM e ANEXO o html do acesso do PDF.
Por enquanto muito obrigado.
Abraços
O QUE FIZ COM O SELENIUM:
Public Sub Untitled()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.start "firefox", "http://agenciaweb.celesc.com.br:8080/"
selenium.setImplicitWait 5000
selenium.open "/AgenciaWeb/autenticar/autenticar.do"
selenium.type "name=sqUnidadeConsumidora", 26911222
selenium.click "id=CPJ"
selenium.type "name=numeroDocumentoCNPJ", 03774688002107
selenium.clickAndWait "css=input.botao"
selenium.type "name=senha", "SENHA"
selenium.clickAndWait "css=input.botao"
selenium.clickAndWait "link=» Histórico de Pagamento"
selenium.clickAndWait "link=01/2016"
selenium.click "id=download"
selenium.stop
End Sub
Bem o problema é que teria que dar-lhe acesso a senha, e trata-se do sistema indústria de SC, FIESC.
Farei o seguinte, enviarei algumas informações e você me diz do que precisa. Primeiro vou te enviar o que já consegui fazer com o SELENIUM e ANEXO o html do acesso do PDF.
Por enquanto muito obrigado.
Abraços
O QUE FIZ COM O SELENIUM:
Public Sub Untitled()
Dim selenium As New SeleniumWrapper.WebDriver
selenium.start "firefox", "http://agenciaweb.celesc.com.br:8080/"
selenium.setImplicitWait 5000
selenium.open "/AgenciaWeb/autenticar/autenticar.do"
selenium.type "name=sqUnidadeConsumidora", 26911222
selenium.click "id=CPJ"
selenium.type "name=numeroDocumentoCNPJ", 03774688002107
selenium.clickAndWait "css=input.botao"
selenium.type "name=senha", "SENHA"
selenium.clickAndWait "css=input.botao"
selenium.clickAndWait "link=» Histórico de Pagamento"
selenium.clickAndWait "link=01/2016"
selenium.click "id=download"
selenium.stop
End Sub
- Anexos
-
- HTML DO PDF.PNG (165.18 KiB) Exibido 9667 vezes
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Download em Lote de Faturas de Energia com Selenium VBA
Ander, bom dia.
Cara, eu consigo entender a questão do uso empresarial, mas realmente isso vai fazer com que essa solução se torne muito mais complicada. Mas vamos dar continuidade.
Pelo código que você enviou, consegui enxergar bem até a parte abaixo:
Posterior a isso, eu não consegui acesso, devido a necessidade da senha, como também não consegui identificar nenhuma das referências posteriores, na imagem que você me enviou.
Agora, o código completo, pelo que entendi, vai abrir o arquivo ".pdf" diretamente no navegador, certo? A questão é saber se as informações que estão dentro do arquivo, por exemplo o consumo, são exibidas na mesma página em que existe o link para download do arquivo. Se essas informações existirem na página, seria necessário o código fonte dessa área das informações.
Agora, quando você deu a sugestão de pegar as informações e jogar diretamente para a planilha, você sugeriu fazer isto, puxando do arquivo ".pdf"? Se sim, até onde conheço do Selenium VBA, e sou bem novo no uso dessa biblioteca, não tem como capturar a informação diretamente do arquivo. Também não conheço nenhum outro recurso em VBA que auxilie na extração das informações de um arquivo ".pdf".
Fico no aguardo de seu retorno sobre os questionamentos acima.
Abraços.
Cara, eu consigo entender a questão do uso empresarial, mas realmente isso vai fazer com que essa solução se torne muito mais complicada. Mas vamos dar continuidade.
Pelo código que você enviou, consegui enxergar bem até a parte abaixo:
Código: Selecionar todos
selenium.type "name=senha", "SENHA"
selenium.clickAndWait "css=input.botao"
Agora, o código completo, pelo que entendi, vai abrir o arquivo ".pdf" diretamente no navegador, certo? A questão é saber se as informações que estão dentro do arquivo, por exemplo o consumo, são exibidas na mesma página em que existe o link para download do arquivo. Se essas informações existirem na página, seria necessário o código fonte dessa área das informações.
Agora, quando você deu a sugestão de pegar as informações e jogar diretamente para a planilha, você sugeriu fazer isto, puxando do arquivo ".pdf"? Se sim, até onde conheço do Selenium VBA, e sou bem novo no uso dessa biblioteca, não tem como capturar a informação diretamente do arquivo. Também não conheço nenhum outro recurso em VBA que auxilie na extração das informações de um arquivo ".pdf".
Fico no aguardo de seu retorno sobre os questionamentos acima.
Abraços.
Re: Download em Lote de Faturas de Energia com Selenium VBA
Olá meu caro Mikel,
Demorei um pouco , pois estava em viagem a trabalho e não pude entrar no fórum, mas poderíamos retomar de onde paramos?
Agora creio que posso lhe passar os dados para vc tentar um teste.
Demorei um pouco , pois estava em viagem a trabalho e não pude entrar no fórum, mas poderíamos retomar de onde paramos?
Agora creio que posso lhe passar os dados para vc tentar um teste.
Re: Download em Lote de Faturas de Energia com Selenium VBA
Parecia estar indo bem, mas apareceu outro problema e gostaria de saber se poderia me ajudar.
Quando meu código com selenium abre a página "200.247.127.47:8080/AgenciaWeb/autenticar/loginCliente.do", meu chrome não abre com este dado na barra de endereço, mas sim com isso: "data:,". O que pode ser?
Abaixo segue o código (se passar teu email/celular te passo o login e senha):
Public Sub Untitled()
Dim selenium As New SeleniumWrapper.WebDriver
Dim iLinha As Integer
Dim Qtde As Integer
Dim CNPJ As String
Dim UC As String
Dim SENHA As String
'Dim PERIODO As String
Qtde = 17 ' define a quantidade de linhas a percorrer na planilha.
For iLinha = 12 To 17
CNPJ = Plan1.Cells(iLinha, 2).Value
UC = Plan1.Cells(iLinha, 3).Value
SENHA = Plan1.Cells(iLinha, 4).Value
'PERIODO = Plan1.Cells(9, 3).Value
selenium.Start "chrome", "http://200.247.127.47:8080/Age.../auten ... Cliente.do"
selenium.setImplicitWait 5000
selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
selenium.Type "name=sqUnidadeConsumidora", UC
selenium.Click "id=CPJ"
selenium.Type "name=numeroDocumentoCNPJ", CNPJ
selenium.clickAndWait "css=input.botao"
selenium.Type "name=senha", SENHA
selenium.clickAndWait "css=input.botao"
selenium.clickAndWait "link=» Histórico de Pagamento"
selenium.clickAndWait "link=01/2016"
selenium.Click "id=save"
selenium.stop
Next iLinha
End Sub
Quando meu código com selenium abre a página "200.247.127.47:8080/AgenciaWeb/autenticar/loginCliente.do", meu chrome não abre com este dado na barra de endereço, mas sim com isso: "data:,". O que pode ser?
Abaixo segue o código (se passar teu email/celular te passo o login e senha):
Public Sub Untitled()
Dim selenium As New SeleniumWrapper.WebDriver
Dim iLinha As Integer
Dim Qtde As Integer
Dim CNPJ As String
Dim UC As String
Dim SENHA As String
'Dim PERIODO As String
Qtde = 17 ' define a quantidade de linhas a percorrer na planilha.
For iLinha = 12 To 17
CNPJ = Plan1.Cells(iLinha, 2).Value
UC = Plan1.Cells(iLinha, 3).Value
SENHA = Plan1.Cells(iLinha, 4).Value
'PERIODO = Plan1.Cells(9, 3).Value
selenium.Start "chrome", "http://200.247.127.47:8080/Age.../auten ... Cliente.do"
selenium.setImplicitWait 5000
selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
selenium.Type "name=sqUnidadeConsumidora", UC
selenium.Click "id=CPJ"
selenium.Type "name=numeroDocumentoCNPJ", CNPJ
selenium.clickAndWait "css=input.botao"
selenium.Type "name=senha", SENHA
selenium.clickAndWait "css=input.botao"
selenium.clickAndWait "link=» Histórico de Pagamento"
selenium.clickAndWait "link=01/2016"
selenium.Click "id=save"
selenium.stop
Next iLinha
End Sub
Re: Download em Lote de Faturas de Energia com Selenium VBA
Segue uma imagem da situação.
- Anexos
-
- SeleniumIMG.png (210.95 KiB) Exibido 9591 vezes
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Download em Lote de Faturas de Energia com Selenium VBA
Ander, bom dia.
Cara, até achei que havia resolvido tudo, mas pelo que vejo ainda não resolveu. Claro, podemos continuar sim.
Eu também tive esse tipo de problema no início. Na verdade não sei ao certo o que foi que resolveu meu problema, mas o erro parou depois de algumas alterações.
Olha, tente fazer a seguintes mudanças, conforme abaixo:
Altere essa parte do código, da seguinte forma:
Tente alterar essa parte do bloco e veja se resolve.
Dúvidas, a disposição.
Cara, até achei que havia resolvido tudo, mas pelo que vejo ainda não resolveu. Claro, podemos continuar sim.
Eu também tive esse tipo de problema no início. Na verdade não sei ao certo o que foi que resolveu meu problema, mas o erro parou depois de algumas alterações.
Olha, tente fazer a seguintes mudanças, conforme abaixo:
Código: Selecionar todos
selenium.Start "chrome", "http://200.247.127.47:8080/Age.../autenticar/loginCliente.do"
selenium.setImplicitWait 5000
selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
Código: Selecionar todos
selenium.Start "chrome", "http://200.247.127.47:8080"
selenium.setImplicitWait 5000
selenium.Open "/AgenciaWeb/autenticar/loginCliente.do"
selenium.setImplicitWait 5000
selenium.Open "/AgenciaWeb/autenticar/autenticar.do"
Dúvidas, a disposição.
Re: Download em Lote de Faturas de Energia com Selenium VBA
Mikel até resolveu e te agradeço pela dica. Continua aparecendo aquele "data:,", mas com a segmentação do código, ele reconhece a segunda parte do endereço e se completa, abrindo a página .
Chego até o ponto de abrir a fatura , mas não consigo salvar o pdf.
Posso te passar por email o acesso caso possa fazer um teste aí pra mim.
Chego até o ponto de abrir a fatura , mas não consigo salvar o pdf.
Posso te passar por email o acesso caso possa fazer um teste aí pra mim.
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Download em Lote de Faturas de Energia com Selenium VBA
Opa, boa tarde.
Se não tiver problema, pode sim.
Pode mandar para o e-mail que esta em minha assinatura, ok.
Fico no aguardo.
Se não tiver problema, pode sim.
Pode mandar para o e-mail que esta em minha assinatura, ok.
Fico no aguardo.