Analytic PlatformKNIMEWeb Scraping

KNIME na Prática: Raspando Dados da Web com KNIME

Um guia rápido para a raspagem da Web no KNIME com um exemplo prático de dicas úteis

Neste artigo veremos como extrair o conteúdo de uma página da Web no KNIME e faremos isso através de um caso de uso.

Sempre que iniciamos a Plataforma KNIME Analytics, aparece uma página de boas-vindas, na qual podemos encontrar links e informações úteis, incluindo uma seção chamada “Dicas e Truques”.

A pergunta é – será que existe uma maneira de extrair todas essas informações de Dicas e Truques de uma só vez?

Fiz a pergunta no fórum KNIME e recebi uma resposta da equipe do KNIME. 

Primeiramente, pode-se encontrar essas dicas em https://www.knime.com/tips-and-tricks . Mas esta página mostra apenas uma dica de cada vez e precisamos atualizar a página para aparecer novas dicas.

Para resolver esse problema, a equipe do KNIME forneceu uma solução: É possível adicionar um ponto de interrogação e um número no final do link para obter novas dicas (por exemplo, https://www.knime.com/tips-and-tricks?1 ) .

Portanto, agora vamos criar um um workflow para obter todas essas dicas usando este formato de link.

1 – Extraindo os Dados

Antes de tudo, precisamos de um node “Table Creator” para produzir a URL base ( https://www.knime.com/tips-and-tricks ). Na janela de configuração do node , crie uma coluna do tipo string chamada “URL” e insira a  URL em sua primeira linha.

table creator KNIME

Vamos clicar em OK e executar o workflow. 

Agora que temos a URL, precisamos de um loop para modificar a URL inserindo um ponto de interrogação e um número diferente a cada loop, assim obteremos o conteúdo de diferentes páginas.

Para isso, vamos usar o node “Counting Loop Start ” configurando a opção “Number of loops” para um número como, por exemplo, 300.

Agora, para modificar a URL, usaremos um node chamado” String Manipulation ” no qual vamos inserir a seguinte expressão:

join($URL$, "?", string($${IcurrentIteration}$$))

O que isso significa?

Juntamos três parâmetros

  1. nosso URL base, fornecido pela nossa coluna de URL ($URL$),
  2. um ponto de interrogação e
  3. um número que, nesse caso, é o número de iteração atual do loop.

O número de iteração atual é fornecido por uma variável de fluxo denominada “current Iteration”. Portanto, temos um URL diferente em cada iteração.

2 – Raspando dicas sobre KNIME

Agora usaremos o node “Webpage Retriever” atribuindo a coluna URL à opção “URL column” dentro das configurações do node. Dentro das configurações do node, você vai observar na seção “Output Settings” a possibilidade de obter a saída no formato XML ao selecionar a opção “Output as XML”. 

Se esta opção não estiver selecionada, o output será produzido no formato HTML. Para este exemplo, mantenha a caixa selecionada, optando assim pela saída no formato XML.

Agora execute o node e vamos para a próxima etapa. A etapa subsequente é a mais importante e a mais interessante, porque aqui extraímos o conteúdo que queremos. 

Para extrair este conteúdo iremos precisar do node “XPath“. Na janela de configuração do node, podemos visualizar o conteúdo XML. Podemos pesquisar e selecionar os elementos que queremos, mas vamos explorar um método mais fácil de fazer isso. 

Inicie o navegador Firefox (existe um motivo para sugerir o Firefox, houve alguns problemas ao usar esse recurso em outros navegadores) e navegue até a página da Web (https://www.knime.com/tips-and-tricks). 

Você vai observar que a página exibe apenas dois elementos principais: 

  1. Título da Dica (uma chamada sobre o conteúdo da dica)
  2. Um parágrafo contendo a dica

Vamos começar pelo título/chamada da dica. Clique com o botão direito do mouse no conteúdo que queremos obter e selecione “Inspecionar Elemento”. Você vai ver um novo quadro no qual o elemento HTML que escolhemos é destacado. Clique com o botão direito do mouse e selecione Copiar e, em seguida, XPath.

xpath with firefox to KNIME

3 – De volta ao KNIME

Agora que temos o XPath do elemento vamos voltar ao KNIME e, na janela de configuração do node XPath, clicar em “add XPath”. Uma nova janela será exibida. Cole o XPath em “XPath value query”.

Como temos um item do elemento por página, selecionamos a opção “Single Cell” na seção “Multiple tab options”.

Por último, nomeie o caminho com o nome “Title”, inserindo o nome no campo “New Column name”

Em seguida, faça o mesmo processo com o parágrafo que contém a dica. Ou seja, volte no navegador, clique com o botão direito “Inspecionar elemento” > copiar > Xpath. 

Vá até o node Xpath no KNIME e adicione o Xpath, nomeando o caminho desta vez de “Tip”. Após incluir os dois caminhos execute o node XPath.

setting xpath with knime

Agora, temos o que procurávamos e o restante do workflow é direto. 

4 – Preparando os Dados

Vamos usar um node “Loop End” para fechar o loop. Um “Column Filter” para excluir colunas desnecessárias deixando apenas as colunas “Title” e “Tip” que produzimos usando o nó XPath.

Use o node  “Row Filter ” para excluir linhas com dicas ausentes.

row filter print - exclude missing values

Usando o node “GroupBy“: 

1- Escolha a coluna “Tip” como a coluna de agrupamento.

group by node - grouping

2- Na guia “Manual Aggregation” escolha a coluna “Title” selecionando a função de agregação “First”.

group by node - aggregation manual

Opcionalmente use os nodes “Column Resorter” e “Sorter” para ordenar colunas e linhas. E, finalmente, um node “Tabela para PDF ” para produzir um arquivo PDF no qual podemos ler todas as dicas de uma só vez (lembre-se de inserir o local de saída do PDF).

5 – Output

Abaixo você pode ver o resultado final, um arquivo PDF contendo diversas dicas sobre a plataforma KNIME Analytics.

KNIME output pdf - results

6 – Conclusão

Este é um breve Caso de Uso utilizando a ferramenta KNIME Analytics. KNIME é uma poderosa ferramenta open source para Data Science disponível para ajudar a AUTOMATIZAR e PRODUTIZAR milhares de processos, como esse de Raspagem de Dados – Web Scrapping.

**Referência e créditos: Este post é uma livre tradução e atualização do post originalmente escrito por Armin Ghassemi Rudd em seu blog.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *