Raspagem da Web com VBA
o que é raspagem de dados?
a raspagem de dados é a técnica que ajuda na extração das informações desejadas de uma página da web 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 para dizer qualquer aplicativo do Microsoft office. Isso ajuda a canalizar informações críticas da página da web.
a raspagem de dados torna-se simples ao trabalhar em um projeto baseado em pesquisa diariamente, e esse projeto é puramente dependente da internet e do site. Para ilustrar ainda mais sobre o tópico, vamos dar o exemplo de um day trader que executa uma macro do excel para puxar informações de mercado de um site de finanças para uma planilha do excel usando o VBA.
neste tutorial, você aprenderá:
- o que é raspagem de dados?
- como preparar a Macro do Excel antes de realizar a raspagem 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 extrair informações do site usando o VBA?
como preparar a Macro do Excel antes de realizar a raspagem 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 raspagem de dados no excel.
esses pré –requisitos são os seguintes:-
Etapa 1) Abra uma Macro baseada no Excel e acesse a opção desenvolvedor do excel.
Etapa 2) Selecione a opção Visual Basic em faixa de Opções do desenvolvedor.
Etapa 3) Insira um novo módulo.
Etapa 4) Inicializar uma nova sub-rotina
Sub test()End sub
O módulo teria resultado como o seguinte: –
Etapa 5) Acessar a opção de referência em ferramenta de guia e referência do Microsoft HTML Object Library e Microsoft internet controle.
os seguintes arquivos devem ser referenciados ao 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. O próximo passo seria incorporar scripts de macro que facilitariam a captura de dados em HTML.
como abrir o Internet Explorer usando o Excel VBA?
Etapa 1) inicialize a variável nas sub-rotinas conforme exibido abaixo
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Etapa 2) para abrir o internet explorer usando VBA, escreva, ou seja, visível = verdadeiro e pressione F5.
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocumentIe.visible=true
O módulo ficaria da seguinte maneira: –
Como Abrir o Site no Internet explorer usando o VBA?
Aqui, estão as etapas para abrir o site no Internet exploer usando VBA
Passo 1) uma vez que você é capaz de acessar o Internet explorer usando o Excel VBA, o próximo passo incorporaria o acesso de um site usando VBA. Isso facilitado pelo atributo Navigate, em que o URL tem que passar como aspas duplas no atributo. Siga as seguintes etapas 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 exibido
agora, a macro do excel está pronta em relação à execução das funções de raspagem. A próxima etapa exibirá como as informações podem ser extraídas do Internet explorer usando o VBA.
como extrair informações do site usando o VBA?
suponha que o day trader queira acessar os dados do site diariamente. Cada vez que o comerciante dia pressiona o clique no botão, ele deve auto puxar os dados de mercado para o excel.
do site acima, seria necessário inspecionar um elemento e observar como os dados são estruturados.
Passo 1) Acesse abaixo o código fonte do HTML 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 da seguinte forma: –
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 sã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 realizar os abaixo mencionados passos: –
Passo 2) Inicializar o documento Html na sub-rotina
O módulo VBA ficaria da seguinte maneira: –
Passo 3) Inicializar a coleção elemento presente no documento HTML
O módulo VBA ficaria da seguinte maneira: –
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 no atributo células do excel da folha 1 presente na pasta de trabalho.
assim que o script de 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 este exemplo, o botão é inicializado como uma atualização.
Etapa 5) Pressione o botão atualizar para obter as abaixo mencionadas saída
Etapa 6) Comparar os resultados no excel com os resultados do internet explorer
Resumo:
- A raspagem de dados permite que o usuário raspar apenas as informações que o usuário deseja.
- a raspagem pode ser realizada usando o internet explorer.
- o processo de raspagem é mais lento no caso do internet explorer; no entanto, ele fornece os resultados desejados ao usuário.
- a raspagem deve ser realizada com absoluta cautela e cautela, pois pode prejudicar e travar o sistema que está sendo utilizado para raspagem.