VBA Web Scraping

Excel VBA Web Scraping

VBA Web Scraping é uma técnica de acessar páginas da web e baixar os dados desse site para os arquivos do nosso computador. A coleta da Web é possível acessando aplicativos externos como o Internet Explorer. Podemos fazer isso de duas maneiras, ou seja, Early Binding e Late Binding.

Web Scraping com VBA significa que quando usamos o VBA para buscar os dados de outras fontes na web, isso pode exigir logins para as fontes de dados, mas primeiro, para fazer isso, precisamos habilitar as referências da seção de ferramentas em o editor VBA da biblioteca HTML da Microsoft para acessar a web a partir do VBA.

Muitos de nós não sabemos que a partir do Excel podemos acessar as páginas da web e obter os dados dessas páginas. Sim, você ouviu direito. podemos vasculhar páginas da web, acessar aplicativos de navegação e muito mais. Neste artigo, mostraremos como escrever um código VBA do Excel para web scraping em detalhes.

Normalmente, abrimos as páginas da web, copiamos os dados e os colamos em nossos arquivos como Excel, Word ou alguns outros arquivos. Mas, neste artigo, mostraremos como acessar sites do Excel e fazer muitos outros tipos de coisas.

Como eliminar dados de sites usando o VBA?

Você pode baixar este modelo VBA Web Scraping Excel aqui - Modelo VBA Web Scraping Excel

Quando quisermos acessar qualquer outro aplicativo do Excel, podemos fazer isso de maneiras, por exemplo, “Early Binding” e “Late Binding”. No estágio de iniciante, é sempre seguro usar a técnica de “Early Binding”.

Para acessar o site, precisamos de aplicativos de navegação, por exemplo, “ Internet Explorer ”. Por ser um objeto externo, precisamos primeiro definir a referência.

Siga as etapas abaixo para fazer um scrap na web.

Etapa 1: Defina a variável VBA e atribua o tipo de dados como “ Internet Explorer ”.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As internet End Sub 

Como você pode ver acima, quando tentamos definir a referência para o Internet Explorer, não conseguimos ver “Internet Explorer”, isso é porque o “Internet Explorer” é um objeto externo, então precisamos definir a referência.

Passo 2: Para definir a referência vá para “ Ferramentas ” e escolha “ Referências ”.

Na janela abaixo, role para baixo e escolha “ Microsoft Internet Controls ”.

Etapa 3: Marque a caixa “Microsoft Internet Controls” e clique em OK. Agora devemos ver esse nome de objeto na lista do IntelliSense.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As inter End Sub 

Etapa 4: Escolha “InternetExplorer”.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer End Sub 

Etapa 5: Em seguida, precisamos definir a referência para habilitar o Internet Explorer. Como esta é uma variável de objeto, precisamos usar a palavra-chave “ Set ” para definir as referências.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer End Sub 

Passo 6: Agora usando a variável “ Internet_Explorer ” podemos usar as propriedades e métodos do Internet Explorer.

Insira o nome da variável e coloque um ponto para ver a lista do IntelliSense.

Código:

Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer. End Sub

Passo 7: Agora para visualizar o aplicativo internet explorer, precisamos escolher a propriedade “ Visible ” e definir o status como “ True ”.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer.Visible = True End Sub 

Agora execute o código e você verá um Internet Explorer abrir no seu computador.

Etapa 8: Como nenhum endereço da web foi mencionado, podemos ver apenas uma página em branco. Para fornecer o endereço da web ao Internet Explorer, precisamos do método “ Navegação ”.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate (End Sub 

Passo 9: Como você pode ver acima, método de “Navegação” perguntando em qual URL navegar no Internet Explorer. Agora preciso abrir o site “ Wallstreetnmojo ” e posso fornecer o endereço URL da seguinte forma. “//Www.wallstreetmojo.com/”

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub 

Agora execute o código, devemos ver a página de endereço da web mencionada no Internet Explorer.

Aqui, temos um problema que, uma vez que a página da web é aberta, nosso código precisa esperar até que a página da web seja totalmente aberta.

Etapa 10: Precisamos usar o loop “Do While” no VBA para realmente esperar que nosso código vá mais longe até que a página mencionada esteja totalmente carregada.

Portanto, adicione abaixo o loop “Do While” para forçar a macro a esperar até que a página da web mencionada chegue ao modo “ Ready State Complete ”.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Faça Enquanto Internet_Explorer.ReadyState End READYSTATE_COMPLETE: Loop Sub 

Passo 11: Agora vamos tentar obter informações sobre o site em uma única linha. Para obter as informações sobre o endereço da web mencionado, precisamos usar a propriedade “ Nome do local ”.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer.Visible = Verdadeiro Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Faça Enquanto Internet_Explorer.ReadyState READYSTATE_COMPLETE Sub-local Explorer.ReadyState: Internet_Explorer.Navigate 

Execute o código e na caixa de mensagem obteríamos as informações sobre o site.

Etapa 12: agora, na parte inferior, também podemos imprimir endereços de sites.

Código:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Novo InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Fazer Enquanto Internet_Explorer.ReadyState READYSTATE_COMExplorer.NavigateNavigate .LocationURL End Sub 

Agora, isso vai dizer sobre a descrição do site e também mostra o endereço do site.

Coisas para lembrar aqui

  • O scraping da Web é possível acessando aplicativos externos como o Internet Explorer.
  • We can do it in two ways i.e. Early Binding & Late Binding. With Early Binding, we can get to see the IntelliSense list but with late binding, we cannot get to see the IntelliSense list at all.