Web Scraping com VBA

Índice:

Anonim

O que é extração de dados?

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

A coleta de dados se torna simples ao trabalhar em um projeto baseado em pesquisa diariamente, 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 do Excel para extrair informações de mercado de um site de finanças em uma planilha do Excel usando o VBA.

Neste tutorial, você aprenderá:

  • O que é extração de dados?
  • Como preparar a macro do Excel antes de executar a extração de dados usando o Internet explorer?
  • Como abrir o Internet Explorer usando o Excel VBA?
  • Como abrir um site no Internet Explorer usando o VBA?
  • Como raspar informações de um site usando o VBA?

Como preparar a macro do Excel antes de executar 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: -

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

Etapa 2) Selecione a opção Visual Basic na faixa de opções Desenvolvedor.

Etapa 3) Insira um novo módulo.

Etapa 4) Inicializar uma nova sub-rotina

Sub test()End sub

O módulo resultaria da seguinte forma: -

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

Os arquivos a seguir devem ser referenciados para o módulo, pois ajuda a abrir o Internet Explorer e facilita o desenvolvimento de scripts de macro.

Agora o arquivo Excel está pronto para interagir com o Internet Explorer. A próxima etapa seria incorporar scripts de macro que facilitariam a coleta de dados em HTML.

Como abrir o Internet Explorer usando o Excel VBA?

Etapa 1) Inicializar a variável nas sub-rotinas conforme exibido abaixo

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

Passo 2) Para abrir o Internet Explorer usando VBA, escreva ie visible = true e pressione F5.

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentIe.visible=true

O módulo seria o seguinte: -

Como abrir um site no Internet Explorer usando o VBA?

Aqui estão as etapas para abrir o site no explorador de Internet usando VBA

Etapa 1) Uma vez que você consiga acessar o Internet Explorer usando Excel VBA, a próxima etapa seria incorporar o acesso a um site usando VBA. Isso é facilitado por Navigate Attribute, em que a URL deve passar como aspas duplas no atributo. Siga as etapas a seguir conforme exibido.

Sub test()Dim, ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate"http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETE

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

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

Como raspar informações de um site usando o 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 automaticamente puxar os dados de mercado para o Excel.

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

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

O código-fonte seria o seguinte: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet 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 coleta 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 abaixo mencionadas: -

Etapa 2) Inicializar o documento Html na sub-rotina

O módulo VBA seria o seguinte: -

Etapa 3) Inicializar o elemento da coleção presente no documento HTML

O módulo VBA seria o seguinte: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

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

O módulo VBA seria o seguinte: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

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

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

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

Etapa 6) Compare os resultados do Excel com os resultados do Internet Explorer

Resumo:

  • A extração de dados permite que o usuário retire apenas as informações que deseja.
  • 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 cuidado e cuidado absolutos, pois pode danificar e travar o sistema que está sendo utilizado para raspagem.
CompanyGroupPre Close (Rs)Current Price (Rs)% Change