Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Extraindo informações de Website - Selenium VBA

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.
EvertonJunio
Colaborador
Colaborador
Mensagens: 13
Registrado em: Sex Set 23, 2016 1:13 pm

Extraindo informações de Website - Selenium VBA

Mensagem por EvertonJunio »

Prezados, boa tarde.

Novamente venho contar com o auxílio de vocês, por gentileza.
Estou tentando criar um sisteminha no VBA, usando o Selenium, para capturar registros de hotéis em várias cidades do Brasil.
O código consegue acessar o site, informar a cidade que eu quero e capturar as informações necessárias, porém quando a cidade não tem hotéis registrados, o código dá erro, naturalmente. Entretanto, não consigo criar um IF para pular para próxima consulta.

O site que estou trabalhando é http://www.hotelinsite.com.br/cidades.asp?1742
Observe que quando a cidade não tem registro a <div class="avisos"> aparece a seguinte mensagem:"Para a combinação dos termos pesquisados não encontramos nenhum hotel. Deseja refazer a busca somente com".

Como o campo é um texto, não estou conseguindo fazer com que o IF torne verdadeiro quando esse campo não é vazio (not empty).

Não consigo anexar a planilha aqui, então, para testar o código coloquem os seguintes códigos na "Plan2" a partir da A2

5655
347
1742


Por favor, me ajudem!!!

Código: Selecionar todos

Public Sub ExtracaoDados()

Dim selenium As New SeleniumWrapper.WebDriver
Dim cidade As String
Dim Lin As Long

Lin = 2
  
'Rodar enquanto tiver códigos de cidades prenchidas
Do While Sheets("Plan2").Cells(Lin, 1) <> ""
'Código da Cidade
cidade = Sheets("Plan2").Cells(Lin, 1)

'Abrir chorme e ir para o site
selenium.Start "chrome", "http://www.hotelinsite.com.br"
selenium.Open "resultado.asp?" & cidade

'Se o campo "avisos" tiver alguma coisa preenchida, não tem resultado. Portanto, deve-se passar para próxima cidade
If selenium.findElementByClassName("avisos").Text = "" Then GoTo nextLinha

'Quadro de aviso se essa cidade mesmo; Sempre que aparece essa mensagem não há resultado disponível
'MsgBox selenium.findElementByClassName("avisos").Text

'Captura a quantidade de hotéis na cidade para a Plan2
Sheets("Plan2").Cells(Lin, 2) = selenium.findElementByClassName("interno").findElementByTagName("p").findElementByClassName("total").Text
Lin = Lin + 1

GoTo nextLinha
nextLinha: 'Referência pra próxima linha.
Lin = Lin + 1


selenium.stop
Loop
   
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.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Extraindo informações de Website - Selenium VBA

Mensagem por Mikel Silveira Fraga »

Everton, boa noite cara.

Bem, dei uma olhada rápida no seu código e fiz um teste. Veja se vai funcionar ai.

Substitua a parte do código abaixo:

Código: Selecionar todos

'Captura a quantidade de hotéis na cidade para a Plan2
Sheets("Plan2").Cells(Lin, 2) = selenium.findElementByClassName("interno").findElementByTagName("p").findElementByClassName("total").Text
Lin = Lin + 1
Por este código:

Código: Selecionar todos

'Verifica se existe algum hotel registrado na cidade pesquisada.
If selenium.findElementsByClassName("interno").Count > 0 Then
'Captura a quantidade de hotéis na cidade para a Plan2
Sheets("Plan2").Cells(Lin, 2) = selenium.findElementByClassName("interno").findElementByTagName("p").findElementByClassName("total").Text
End If
Uma sugestão sobre o código, na linha em que você chama o método Start do WebDriver, ele pode ficar fora do laço, antes da linha com o comando Do While. Dessa forma, apenas o final do endereço será gerado e você não terá que executar este método toda vez.

Teste e nos retorne se deu certo.

Abraços e bom descanso.


EvertonJunio
Colaborador
Colaborador
Mensagens: 13
Registrado em: Sex Set 23, 2016 1:13 pm

Re: Extraindo informações de Website - Selenium VBA

Mensagem por EvertonJunio »

Prezado Mikel,

Muito obrigado pela ajuda.

Deu certinho!!!!

Abraços


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