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.
Passo 2) Selecione a opção Visual Basic na faixa do desenvolvedor.
Passo 3) Insira um novo módulo.
Passo 4) Inicialize uma nova sub-rotina
Sub test() End sub
O módulo resultaria da seguinte forma: –
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.
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: –
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
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.
Passo 5) Pressione o botão Atualizar para obter a saída mencionada abaixo
Passo 6) Compare os resultados no Excel com os resultados do Internet Explorer
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.