Usando Excel VBA e Selenium

Índice:

Anonim

O que é extração de dados usando selênio?

O Selenium pode ser classificado como a ferramenta de automação que facilita a coleta de informações das páginas HTML da web para realizar a coleta da web utilizando o google chrome.

Neste tutorial, você aprenderá:

  • O que é extração de dados usando selênio?
  • Como preparar a macro do Excel antes de realizar a extração de dados usando o Selenium?
  • Como abrir o Google Chrome usando VBA?
  • Como abrir um site no Google Chrome usando o VBA?
  • Como raspar informações de um site usando o VBA?

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

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) Inicialize uma nova sub-rotina e nomeie-a como test2.

Sub test2 ()End sub

A seguir estão os resultados no módulo: -

Etapa 5) Acesse a opção de referência na guia de ferramentas e consulte a biblioteca de tipos Selenium. As seguintes bibliotecas devem ser referenciadas para o módulo, pois ajuda a abrir o Google Chrome e facilita o desenvolvimento de scripts de macro.

Agora o arquivo Excel está pronto para interagir com o Internet Explorer. Os próximos passos seriam incorporar um script de macro que facilitaria a coleta de dados em HTML.

Como abrir o Google Chrome usando VBA?

Aqui estão as etapas para abrir o Google Chrome usando VBA

Etapa 1) Declare e inicialize as variáveis ​​na sub-rotina conforme exibido abaixo

Sub test2 ()Dim driver como novo webdriverDim rowc, cc, columnC como inteiro

Etapa 2) Para abrir o google chrome usando selênio e VBA, escreva driver.start "chrome" e pressione F5 .

O seguinte seria o código.

Sub test2 ()Dim driver como novo webdriverDim rowc, cc, columnC como inteiroDriver.start "Chrome"Application.Wait Now + Timevalue ("00:00:20")End sub

O módulo resultaria da seguinte forma: -

Como abrir um site no Google Chrome usando o VBA?

Depois de conseguir acessar o google chrome usando VBA, o próximo passo seria incorporar o acesso a um site usando VBA. Isso é facilitado pela função get, em que a URL deve ser passada como aspas duplas no atributo.

Siga as seguintes etapas conforme exibido

O módulo seria o seguinte: -

Pressione F5 para executar a macro.

A seguinte página da web seria aberta no google chrome conforme exibida

Sub test2 ()Dim driver como novo webdriverDim rowc, cc, columnC como inteiroDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Application.Wait Now + Timevalue ("00:00:20")End sub

Agora a macro do Excel está pronta para realizar as tarefas de raspagem. A próxima etapa mostraria como as informações podem ser extraídas aplicando selênio e 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. Acesse o código-fonte HTML abaixo pressionando control + Shift + I

O código-fonte seria o seguinte: -

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 extraia as informações do cabeçalho da tabela HTML e os dados correspondentes associados à tabela. Execute as seguintes tarefas conforme exibido: -

Etapa 1) Formular um loop for que percorre as informações do cabeçalho HTML como uma coleção. O driver selenium deve encontrar as informações do cabeçalho da tabela HTML. Para fazer isso, utilizamos os métodos FindElementByClass () e FindElementByTag () para executar a tarefa conforme exibido

O módulo VBA seria o seguinte: -

Sub test2 ()Dim driver como novo WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Falsedriver.Inicie o "cromo"driver.Get "http://demo.guru99.com/test/web-table-element.php"Para each th In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Para cada t em th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Próximo tPróximo dia

Etapa 2) Em seguida, o driver de selênio localizaria os dados da tabela usando uma abordagem semelhante, conforme mencionado acima. Você deve escrever o seguinte código: -

Sub test2 ()Dim driver como novo WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Falsedriver.Inicie o "cromo"driver.Get "http://demo.guru99.com/test/web-table-element.php"Para each th In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Para cada t em th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Próximo tPróximo diaPara cada tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")colunaC = 1Para cada td em tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolunaC = colunaC + 1Próximo tdrowc = rowc + 1Próximo trApplication.Wait Now + TimeValue ("00:00:20")End Sub

O módulo vba seria o seguinte: -

O excel pode ser inicializado por meio do 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 2 presente na pasta de trabalho. Além disso, o atributo text ajuda a obter as informações de texto colocadas sob a tag HTML.

Sub test2 ()Dim driver como novo WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Falsedriver.Inicie o "cromo"driver.Get "http://demo.guru99.com/test/web-table-element.php"Para each th In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Para cada t em th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Próximo tPróximo diaPara cada tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")colunaC = 1Para cada td em tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolunaC = colunaC + 1Próximo tdrowc = rowc + 1Próximo trApplication.Wait Now + TimeValue ("00:00:20")End Sub

O módulo vba seria o seguinte: -

Passo 3) 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 atualizar ou qualquer nome adequado que possa ser inicializado nele. Para este exemplo, o botão é inicializado como atualização.

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

Etapa 5) Compare os resultados do Excel com os resultados do Google Chrome

Resumo:

  • O Selenium pode ser classificado como a ferramenta de automação que facilita a coleta de informações das páginas HTML da web para realizar a coleta da web utilizando o google chrome.
  • A raspagem na internet deve ser realizada com cuidado.
  • Normalmente, é contra os termos do site da Web extrair informações.
  • Quando a raspagem é feita por meio de selênio, ele oferece suporte a vários navegadores.
  • Em outras palavras, o scraper pode realizar tarefas semelhantes de scraping no Firefox e também no Internet Explorer.
Empresa Grupo Pré-fechamento (Rs) Preço atual (Rs) % de mudança