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.
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
- nosso URL base, fornecido pela nossa coluna de URL ($URL$),
- um ponto de interrogação e
- 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:
- Título da Dica (uma chamada sobre o conteúdo da dica)
- 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.
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.
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.
Usando o node “GroupBy“:
1- Escolha a coluna “Tip” como a coluna de agrupamento.
2- Na guia “Manual Aggregation” escolha a coluna “Title” selecionando a função de agregação “First”.
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.
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.