Em um dos primeiros posts do blog, mostrei um exemplo de crawler para minerar notícias utilizando o Nokogiri. Apesar de ser uma boa demonstração para um propósito geral, a mineração de notícias e posts em blogs pode ser facilitada se o mesmo tiver disponível uma API REST. No caso de blogs em WordPress, por exemplo, essa API já vem habilitada por padrão e tem seu endereço conhecido. Vou demonstrar nesse post como fazer a consulta/recuperação de posts através dessa API.
Como exemplo, vou utilizar o blog de notícias Meu PS4, mas o método pode ser utilizado para qualquer blog WordPress com a API habilitada. Para checar, você pode acessar o endereço padrão da API no seu navegador: https://www.o_endereco_do_blog.com.br/wp-json/wp/v2/posts. Se estiver habilitada, você verá os 10 posts mais recentes no formato JSON. Para manipular essas informações, utilizo as gemas ‘open-uri’ (para abrir endereço remoto como arquivo) e json (para fazer o parsing da resposta) que podem ser obtidas através do comando gem install.
Exemplo de retorno JSON
O CÓDIGO-FONTE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
require 'open-uri' require 'json' require 'resolv-replace' post_data = [] posts = JSON.parse(open("https://www.meups4.com.br/wp-json/wp/v2/posts?_embed").read) posts.each do |post| post_data << { title: post["title"]["rendered"], link: post["link"], body: post["content"]["rendered"], author: post["_embedded"]["author"].first["name"], featured_image: post["_embedded"]["wp:featuredmedia"].first["source_url"], } end puts post_data |
Nesse exemplo mais trivial, são recuperadas informações básicas (título, conteúdo, link, autor e imagem destaque) dos 10 posts mais recentes. O parâmetro “_embed” é adicionado à URL para que a consulta retorne informações de entidades anexas ao post (como autor e imagem destaque) sem a necessidade de consultas adicionais. Outros parâmetros úteis são o page (para informar o número da página/deslocamento e recuperar posts mais antigos) e o search (para recuperar posts com termos específicos). O guia de referência completo da API do WordPress pode ser consultada aqui.
É válido ressaltar a necessidade de sanitizar o conteúdo retornado por questões de segurança. Além de evitar injeção de códigos, o conteúdo do post pode conter tags de scripts e estilos CSS indesejados (o Nokogiri é uma boa opção para auxiliar na remoção de tags em conteúdo HTML). Além da mineração de dados, o uso da API é válido para recuperação de conteúdo próprio, na implementação de um aplicativo mobile que exibe suas postagens, por exemplo.
Quaisquer dúvidas ou sugestões, utilize a área de comentários ou entre em contato!
1 Comentário
Sannytet
12 de dezembro de 2018 at 03:11Nice posts! 🙂
___
Sanny