Raspagem da Web com VBA

O que é Raspagem de Dados?

A raspagem de dados é a técnica que auxilia na extração das informações desejadas de uma página HTML para um arquivo local presente em sua máquina local. Normalmente, um arquivo local pode corresponder a um arquivo Excel, arquivo Word ou, digamos, qualquer Microsoft aplicativo de escritório. Ajuda a canalizar informações críticas da página web.

A coleta de dados torna-se simples quando se trabalha diariamente em um projeto baseado em pesquisa, e tal projeto depende puramente da internet e do site. Para ilustrar melhor o assunto, tomemos o exemplo de um day trader que executa uma macro Excel para extrair informações de mercado de um site de finanças para uma planilha Excel usando VBA.

Como preparar a macro do Excel antes de realizar a extração de dados usando o Internet Explorer?

Existem certos pré-requisitos que devem ser executados no arquivo de macro do Excel antes de entrar no processo de extração de dados no Excel.

Esses pré-requisitos são os seguintes: –

Passo 1) Abra uma macro baseada em Excel e acesse a opção de desenvolvedor do Excel.

Prepare a macro do Excel antes de realizar a extração de dados usando o Internet Explorer

Passo 2) Selecione a opção Visual Basic na faixa do desenvolvedor.

Prepare a macro do Excel antes de realizar a extração de dados usando o Internet Explorer

Passo 3) Insira um novo módulo.

Prepare a macro do Excel antes de realizar a extração de dados usando o Internet Explorer

Passo 4) Inicialize uma nova sub-rotina

Sub test()
End sub

O módulo resultaria da seguinte forma: –

Prepare a macro do Excel antes de realizar a extração de dados usando o Internet Explorer

Passo 5) Acesse a opção de referência na guia de ferramentas e referência Microsoft Biblioteca de objetos HTML e Microsoft controle da internet.

Os arquivos a seguir devem ser referenciados ao módulo, pois auxiliam na abertura do Internet Explorer e facilitam o desenvolvimento de macro scripts.

Prepare a macro do Excel antes de realizar a extração de dados usando o Internet Explorer

Agora o arquivo Excel está pronto para interagir com o internet explorer. O próximo passo seria incorporar scripts de macro que facilitariam a extração de dados em HTML.

Como abrir o Internet Explorer usando Excel VBA?

Passo 1) Inicialize a variável nas sub-rotinas conforme mostrado abaixo

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

Passo 2) Para abrir o Internet Explorer usando VBA, escreva ou seja, visível = verdadeiro e imprensa F5.

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument
Ie.visible=true

O módulo ficaria assim: –

Abra o Internet Explorer usando Excel VBA

Abra o Internet Explorer usando Excel VBA

Como abrir um site no Internet Explorer usando VBA?

Aqui estão as etapas para abrir um site no Internet Explorer usando VBA

Passo 1) Assim que você conseguir acessar o internet explorer usando Excel VBA, o próximo passo seria incorporar o acesso a um site usando VBA. Isso é facilitado pelo Navigate Attribute, em que a URL deve passar como aspas duplas no atributo. Siga as etapas a seguir conforme exibidas.

Sub test()
Dim, ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate"http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

Passo 2) - Pressione F5 para executar a macro. A seguinte página da web seria aberta conforme exibido

Abra o site no Internet Explorer usando VBA

Agora, a macro do Excel está pronta para executar as funções de raspagem. A próxima etapa mostraria como as informações podem ser extraídas do Internet Explorer usando VBA.

Como extrair informações do site usando VBA?

Suponha que o day trader queira acessar os dados do site diariamente. Cada vez que o day trader pressiona o botão, ele deve extrair automaticamente os dados do mercado para o Excel.

No site acima, seria necessário inspecionar um elemento e observar como os dados estão estruturados.

Passo 1) Acesse o código-fonte HTML abaixo pressionando control + Shift + I

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

O código fonte seria o seguinte: –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document

Como pode ser visto que os dados estão estruturados como uma única tabela HTML. Portanto, para extrair dados inteiros da tabela html, seria necessário projetar uma macro que coletasse os dados na forma de uma coleção.

A coleção seria então colada no Excel. Para alcançar os resultados desejados, execute as etapas mencionadas abaixo: –

Passo 2) Inicialize o documento HTML na sub-rotina

O módulo VBA ficaria assim: –

Passo 3) Inicialize o elemento da coleção presente no documento HTML

O módulo VBA ficaria assim: –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

Passo 4) Inicialize as células da planilha Excel com a ajuda do loop aninhado, conforme mostrado

O módulo VBA ficaria assim: –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object

ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

O Excel pode ser inicializado usando o atributo range da planilha Excel ou através do atributo células da planilha Excel. Para reduzir a complexidade do script VBA, os dados da coleta são inicializados no atributo de células Excel da planilha 1 presente na pasta de trabalho.

Assim que o script da macro estiver pronto, passe e atribua a sub-rotina ao botão Excel e saia do módulo do VBA. Rotule o botão como atualização ou qualquer nome adequado que possa ser inicializado para ele. Neste exemplo, o botão é inicializado como uma atualização.

Raspe informações do site usando VBA

Passo 5) Pressione o botão Atualizar para obter a saída mencionada abaixo

Raspe informações do site usando VBA

Passo 6) Compare os resultados no Excel com os resultados do Internet Explorer

Raspe informações do site usando VBA

Resumo

  • A extração de dados permite que o usuário extraia apenas as informações que deseja. Para encontrar as melhores ferramentas para essa finalidade, dê uma olhada nesta lista de ferramentas de web scraping que podem ajudá-lo a extrair com eficiência as informações desejadas de vários sites.
  • A raspagem pode ser realizada usando o Internet Explorer.
  • O processo de raspagem é mais lento no caso do Internet Explorer; no entanto, ele entrega os resultados desejados ao usuário.
  • A raspagem deve ser realizada com absoluto cuidado e cautela, pois pode danificar e travar o sistema utilizado para raspagem.