Às vezes, o acesso aos dados não é fácil. Por mais que a gente deseje que tudo esteja disponível como dados abertos, nem sempre essa é a realidade. Não é raro que as informações estão dispersas em várias páginas, sendo preciso organizá-las em tabelas usando técnicas de raspagem de dados. 

Este processo não precisa ser algo difícil. Já imaginou fazer esta coleta usando apenas o Google Sheets? É possível até mesmo expandir as funções originais do programa, por meio de complementos e scripts que já estão prontos.

Para seguir este tutorial, você não precisa saber escrever códigos. Apresentaremos alguns recursos do Google Sheets que vão facilitar o seu trabalho com a obtenção de dados no dia a dia. O tutorial foi desenvolvido por Anicely Santos com base no workshop de Pedro Lenhard no Coda 2021. Vale a pena ver a planilha principal montada por ele para esta atividade, que traz informações sobre as funções documentadas aqui e muitas outras.

Este texto está dividido em 2 partes.

Na primeira parte, veremos como trabalhar com fórmulas e funções nativas do Google Sheets. Já na segunda seção, abordaremos complementos e scripts que são uma mão na roda na hora de obter certos tipos de dados. Veja cada uma das partes em resumo abaixo e o detalhamento na sequência.

Parte 1 – Fórmulas e funções nativas
Import Data
Import Feed
Import HTML
Import XML

Parte 2 – Complementos e scripts
Instalando um add-on no Google Sheets
Import from web
Import JSON
Import JSON com script
Wikipedia Tools

Fórmulas e funções nativas

O Sheets possui funções nativas bem simples e oferece orientações sobre quais informações devem ser incluídas para que tudo funcione corretamente. Aqui veremos três fórmulas: uma para importar dados, outra para obter feeds e, por fim, uma para lidar com páginas em HTML.

Atenção às configurações de localização

É importante lembrar que os parâmetros nas fórmulas são separados por “ponto e vírgula”, se a sua planilha no Google Sheets estiver configurada para o Brasil. Caso contrário, o separador pode ser a vírgula. Clique em “Arquivo” e depois em “Configurações de planilha…” para conferir essas opções.

Ao usar qualquer uma das fórmulas abaixo, se você alterar o conteúdo importado, as informações desaparecem. Para manter as informações, basta selecionar todo o conteúdo (por exemplo, utilizando o atalho do teclado: ctrl + A) e copiar (com atalho Ctrl + C), colando o conteúdo copiado em uma nova aba/planilha (usando ctrl + Shift + V ou o botão direito do mouse, escolhendo a opção ‘Colar Especial’  > ‘Só os valores’). Depois disso, você pode manipular o conteúdo tranquilamente.

IMPORT DATA

Essa fórmula serve para extrair dados de um .csv (valor separado por vírgula) ou .tsv (valores separados por tabulação) diretamente do link, sem precisar baixar e importar o arquivo. A fórmula é a seguinte: 

=importdata(“url”; “delimitador”;”localidade”)

Onde:

  • url: Pode ser o próprio endereço do csv/tsv ou uma célula da planilha que indique onde o link está armazenado; 
  • delimitador: Precisa ser um caractere que indique como está organizado seu arquivo csv/tsv. Se esse campo não for preenchido, ele inclui por padrão vírgula para csv ou espaço para tsv;
  • localidade: Um código de idioma e região a ser utilizado. Se esse campo não for preenchido, ele coloca como padrão o idioma da sua planilha;

Como todos os campos são textos, é importante que estejam entre aspas, salvo se o conteúdo for indicado a partir de uma célula.

Vamos praticar

Crie uma tabela em branco no Google Sheets e digite =importdata. Perceba que a medida que você vai digitando a fórmula, o Sheets já te mostra algumas opções de importação. 

Para praticar, iremos extrair os dados de um csv sobre a Central de Atendimento de Serviços da Emlurb – 156 na cidade do Recife.

O endereço que precisamos está no campo URL. Observe que o link termina com a extensão .csv, ou seja, este é o endereço do arquivo. É isso que precisamos para que a fórmula funcione. Copie esse link e preencha a fórmula com as opções solicitadas. Seu comando deve parecer com esse:

=importdata(“http://dados.recife.pe.gov.br/dataset/93273993-d92c-4162-8c4a-66c930590c31/resource/b2692afb-c30d-4a83-a440-f1f70f61b749/download/156_cco_2022.csv”;”;”)

Dê enter e aguarde carregar. Se você fez corretamente, o conteúdo deve aparecer na sua planilha.

Veja abaixo a demonstração de Pedro Lenhard durante seu workshop na edição de 2021 da Conferência de Jornalismo de Dados e Métodos Digitais, o Coda.Br.

IMPORT FEED

Nessa fórmula é possível organizar notícias que estão disponíveis em feeds RSS (Rich Site Summary). O padrão RSS é baseado em XML e comumente usado para fornecer um feed de atualizações das postagens de um determinado site. A fórmula abaixo facilita a tabulação de notícias de páginas que usam este padrão, permitindo ainda incluir filtros na raspagem. 

O link para a documentação desta função é: https://support.google.com/docs/answer/3093337?hl=pt

A fórmula tem a seguinte forma:

=importfeed(“url”;[consulta];[cabeçalhos]; [num_items])

Onde:

  • url: Precisa ser o endereço onde o RSS está armazenado entre aspas ou uma referência a célula na planilha;
  • consulta: Campo opcional. Especifica quais dados devem ser obtidos a partir da URL. Na documentação tem uma lista de sugestão para esse parâmetro. Se não for especificado, ele retorna como padrão todos os itens;
  • cabeçalhos: Campo opcional. Aqui especifica-se a inclusão ou não do título das colunas dos dados importados. Se nada for especificado, o padrão é FALSE;
  • num_items: Campo opcional. Determina quantos itens devem ser retornados, a partir do mais recente. Se não for especificado, retorna tudo;

Vamos praticar

Digite =importfeed em uma página em branco do Google Sheets. Usaremos o RSS do Buzzsumo, uma plataforma que organiza conteúdos que são tendências em diversos países. Os passos são os mesmos: preencha o conteúdo da fórmula com a URL e as variáveis (se quiser), tecle enter e aguarda. Em seguida, o conteúdo deve ser importado. Sua fórmula preenchida deve parecer com essa:

=importfeed(“https://app.buzzsumo.com/rss/trending/OTkxNzNramhha3NkaGFraA%3D%3D/a2poYWtzZGhha2g%3D/QnJhemlsa2poYWtzZGhha2g%3D/a2poYWtzZGhha2g%3D/NTk4ODgza2poYWtzZGhha2g%3D/a2poYWtzZGhha2g%3D/dHJlbmRpbmdfbm93a2poYWtzZGhha2g%3D?hours=24”)

Nesta fórmula, não temos parâmetros opcionais, assim ela preenche esses campos com as opções padrão.

IMPORT HTML

Use esta fórmula para trazer tabelas ou listas de páginas na web, quando não quiser/houver a opção de exportar como CSV. 

O link para a documentação desta função é: https://support.google.com/docs/answer/3093339?hl=pt-BR

A fórmula é a seguinte:

=importhtml(“url”;”table”;índice)

=importhtml(“url”;”list”;índice)

Onde:

  • url: Será sempre o endereço web de onde está o conteúdo ou uma célula na tabela que referencie;
  • consulta: Aqui você informa como os dados que você quer estão organizados na página: se em formato de tabela (específica table) ou formato de lista (específica list). Acima a fórmula está preenchida nesse campo nas duas opções possíveis;
  • índice: Onde essa lista/tabela está localizada na página.

Para entender melhor como o índice funciona, vou usar o exemplo das tabelas de viagens do presidente do Brasil na Wikipédia. Perceba que existem várias tabelas nesta página, totalizando 6, contadas de cima para baixo estão organizadas dessa forma:

  1. 2019
  2. 2020
  3. 2021
  4. 2022
  5. Próximas viagens
  6. Eventos multilaterais

Por exemplo, se quisesse extrair a 3ª tabela, das viagens em 2021, é só colocar no campo índice o número 3. Veja mais sobre isso no exemplo a seguir.

Vamos praticar

Diferente das outras fórmulas que possuem parâmetros opcionais, aqui é necessário preencher todos os campos. Iremos extrair a tabela de voos no ano de 2021. A sua fórmula deve estar semelhante a essa:

=importHTML(“https://pt.wikipedia.org/wiki/Lista_de_viagens_presidenciais_de_Jair_Bolsonaro”;”table”;3)

Dê enter e aguarde carregar. Se você fez corretamente, o conteúdo deve aparecer na sua planilha.

IMPORT XML

Antes de qualquer coisa, vamos entender um pouco o que é XML. Um documento XML é bem parecido com um documento HTML, enquanto que neste último é construído por várias tags, no XML as tags serão chamados de nós. Para navegar por esses nós, usamos o XPath. O XPath por sua vez consegue desmembrar todo o documento e trazer exatamente a parte que for requisitada. Para isso, é preciso aprender um pouco de como criar esse script para a fórmula entender exatamente o que o você quer extrair. Temos o tutorial  XPath para raspagem de dados em html que detalha o suficiente para você conseguir “se virar” quando precisar utilizar esse recurso.

O link para a documentação desta função é:  https://support.google.com/docs/answer/3093339?hl=pt-BR

Vejamos a fórmula.

=importxml(“url”; consulta_xpath; l[ocalidade]):

  • url: É o endereço web da página que você quer extrair os dados. Também pode ser referenciado por meio de uma célula na planilha; 
  • consulta_xpath: O script XPath a ser executado sobre os dados estruturados;
  • localidade: O idioma ou localidade a ser utilizado. É um campo opcional e caso não seja preenchido, o padrão será o de idioma da sua planilha;

Um exemplo prático para essa fórmula você encontra no tutorial que indicamos acima.

Complementos e scripts

Embora já existam muitos recursos implementados no Sheets, ainda assim é possível que você precise de algo e não encontre. É para isso que existem os add-ons ou complementos, que podem ser instalados na sua planilha para estender suas funcionalidades. Eles seguem a mesma lógica das extensões em navegadores. Você pode tanto instalar complementos já disponíveis no Google Workspace Marketplace, quanto criar o seu próprio e disponibilizar para outras pessoas.

Para utilizar os add-ons que mostraremos aqui, é importante ter conhecimentos prévios sobre XPath. Confira o tutorial sobre o assunto se isso for novidade para você. Aqui, partiremos do princípio que você já tem esses conhecimentos.

O XPath é ótimo para pegar partes específicas de uma estrutura HTML. O inspetor de elementos dos navegadores é uma das ferramentas cruciais nessa exploração, mas também existem outras abordagens para descobrir o caminho XPath de um elemento, como extensões para o navegador.

Instalando um add-ON NO GOOGLE SHEETS

Na barra de menus do seu Google Sheets, há a opção Extensões (ou Add-ons, dependendo do idioma). É por meio desse menu que instalamos as funcionalidades extras que veremos aqui. O procedimento para instalar qualquer complemento é o mesmo:

  • Clique no menu Extensões (ou add-ons);
  • Escolha a opção Complementos;
  • No novo menu que se abre, escolha Instalar Complementos;
  • A loja do Google vai abrir, então, escolha a extensão que você deseja instalar;
  • Clique em instalar, dê as permissões necessárias;
  • Após instalada, volte ao menu extensões. A sua extensão deve aparecer lá.

Algumas extensões precisam ser ativadas, outras não. Vá ao menu Extensões e observe as opções que aparecem para o add-on recém-instalado para saber qual é  seu caso.

A seguir veremos os add-ons import web que extrai dados de qualquer site, desde buscadores a lojas virtuais, e funciona utilizando xpath; import json, que extrai dados que estejam na linguagem json e os apresenta organizados na tabela; O wikipedia tools, que possui diversas funções para extrair dados da wikipedia, wikidata e pagevies;  e o script json que faz a mesma coisa que o import json e ainda mais, através de outras fórmulas que estão inclusas, possuindo um diferencial em relação aos add-ons: não tem limite de requisições. 

IMPORT FROM WEB

Vamos instalar o add-on  “ImportFromWeb”. Com ele, é possível pegar dados em sites diversos, desde buscadores, como o Google, e páginas de ecommerce até redes sociais, como o Twitter. Esse complemento funciona como se fosse uma fórmula. No entanto, para que ele comece a funcionar é preciso ativá-lo. No menu Extensões, clique no nome da extensão instalada e escolha a opção Activate add-on. Hora de entender a fórmula:

=importfromweb(“urls”; selectors; options)

  • urls: É possível incluir mais de um link para extração de conteúdo;
  • selectors: aqui é possível incluir os XPath ou seletores CSS separados por dois pontos;
  • options: É um parâmetro opcional, mas que possui opções que podem potencializar ainda mais a fórmula. Confira a documentação oficial do complemento para mais detalhes.

Vamos praticar

Neste exercício, vamos coletar os resultados de buscas do Google para as palavras “dados abertos” em sites governamentais no Brasil. Temos um tutorial sobre busca avançada na web, que pode ajudar na construção de termos de busca mais precisos.

Como exemplo, digite os termos de busca abaixo na barra de pesquisa do Google e copie a URL que foi gerada:

“dados abertos” site:gov.br

Digamos que você queira pegar o título de cada resultado, o link e a descrição para organizar um catálogo de dados abertos, por exemplo. Em uma planilha em branco, organize os dados da seguinte maneira:

  • Na célula A1, coloque a URL que resultou nas buscas do Google. Deve ser algo como este endereço: https://www.google.com.br/search?q=%E2%80%9Cdados+abertos%E2%80%9D+site%3Agov.br
  • Nas células A2, B2 e C2, inclui os endereços XPaths para o conteúdo desejado, por exemplo:
    • A2: título do resultado  – //h3[@class=’LC20lb MBeuO DKV0Md’]
    • B2: descrição//div[@class=’VwiC3b yXK7lf MUxGbd yDYNvb lyLwlc lEBKkf’]
    • C2: o link//div[@class=’TbwUpd’]/cite

Atenção: os nomes das classes podem variar, você pode conferir as classes (os códigos esquisitos em negrito acima) pelo ‘Inspetor Web’ em seu navegador.

Veja abaixo como fica a aplicação na fórmula. Repare que os seletores são separados por dois pontos e não entre ćom vírgulas.

=importfromweb(a1 ; b2:c2:d2)

Se executada corretamente, a fórmula deve trazer uma lista com parte dos resultados que o Google apresentou. Caso queira aumentar a lista, basta ir no final da URL que está em A1 e incluir &num=50 (coloque o número que você quiser), a fórmula vai atualizar e aumentar. 

Veja aqui um exemplo de planilha preenchida e, caso queira fazer uma cópia, basta instalar e ativar o add-on e depois duplicar o modelo, indo em Arquivo > Fazer uma cópia no seu Google Sheets: https://docs.google.com/spreadsheets/d/1e5iaf1VPYzkJjzx5DzBZIdOofgq5aaRPrZjR9bCN7Uk/edit?usp=sharing

IMPORT JSON

Esse add-on extrai os dados em formato JSON, muito comum em APIs, por exemplo. O resultado fica organizado como uma tabela, no Google Sheets. Ficou confuso? JSON (JavaScript Object Notation – Notação de Objetos JavaScript) é um formato leve de troca de dados, fácil tanto para interpretação humana quanto de máquina. Veja abaixo um exemplo de como um JSON se parece.

Fonte: imagem de dados em JSON da API Minha Receita

 

Já um API (Application Programming Interface – Interface de Programação de Aplicações) é uma interface entre o usuário e um conjunto de dados. Existem APIs em diversas plataformas e serviços, como o site da Câmara dos Deputados

Comece instalando o add-on ImportJson e a ative-o em seguida. Depois, será possível chamar a fórmula na planilha. A fórmula obedece ao seguinte padrão.

=importjson(inputs; filters; options)

Onde: 

  • inputs: você pode incluir a URL da API ou JSON, podem ser mais de uma.
  • filters: Quando você está lidando com APIS, elas possuem alguns filtros de requisições. Aqui você pode indicar quais conteúdos específicos você deseja extrair. Se não for indicado, por padrão a fórmula trará tudo.
  • options: Também é um parâmetro opcional e serve para organizar melhor seus resultados na planilha, como por exemplo trazer os resultados sem título das colunas. A lista das options que podem ser especificadas se encontra na documentação.

Vamos praticar

Antes de iniciar a utilização de uma API, é sempre importante consultar a documentação para entender como ela se comporta e a melhor maneira de conseguir os dados. 

Usaremos uma API divertida chamada Advice Slip JSON API, que dá um conselho aleatório diariamente. Podemos receber o conselho do dia ou selecionar diretamente algum a partir de um identificador numérico.

De maneira muito simples, vou adaptar a fórmula com as informações que me tragam o conselho do dia:

=importjson(“https://api.adviceslip.com/advice)

Não foi incluído nenhum parâmetro, apenas a URL, o que permite a API trazer todo conteúdo (que nesse caso é apenas o conselho diário) e me mostrar quais parâmetros (também conhecido como endpoints) eu posso passar em filter. Nessa API são apenas dois:  o slip/id e o slip/advice, mas isso muda de API para API. Para entender como esses parâmetros funcionam, consulte a documentação

Aplicando na fórmula, se quisesse trazer outro conselho que está armazenado na id 5, bastaria fazer o seguinte:

=importjson(“https://api.adviceslip.com/advice/5)

IMPORT JSON COM SCRIPT

Além da possibilidade de usar o add-on, existe também um outro jeito de extrair dados JSON: implementando um script. Um script nada mais é que um conjunto de instruções escritas em código. O Google Sheets possui uma área específica para incluir esses “conjuntos” de instruções e isso é ótimo, pois permite que você possa personalizar sua planilha. Aqui, vamos instalar um script criado por Brad Jasper, mas basta pesquisar para encontrar outros com diversas finalidades.

O procedimento para incluir scripts no Google Sheets é o seguinte:

  • Clique no menu Extensões (ou add-ons);
  • Escolha a opção Apps Scripts;
  • Vai abrir uma nova tela, com uma grande área para escrever código;
  • Apague o que tiver escrito. Depois, copie e cole o conteúdo desse Github;
  • Salve com o nome ImportJSON.gs;
  • Volte para a planilha;

Se você fizer todos os passos corretamente, quando colocar =importjson vão aparecer duas fórmulas com nomes iguais. Isso acontece porque anteriormente foi instalado um add-on de mesmo nome. Porém, além disso também aparecerá outros importjson: ImportJSONFromSheet, ImportJSONViaPost, ImportJSONBasicAuth, ImportJSONAdvanced. Todas essas funcionalidades vieram a partir desse enorme script que implementamos. Não é legal?!

WIKIPEDIA TOOLS

Para quem trabalha com SEO (Search Engine Optimization) ou está escrevendo algum artigo e precisa de palavras-chaves relacionadas a um determinado assunto, esse add-on pode ser uma boa. Suas funções são muitas, vale investir um tempo explorando e conferir esse template, que traz abas relacionadas a cada função. Uma particularidade desse add-on é que as fórmulas devem ser escritas em letras maiúsculas.

Esse complemento extrai dados a partir de 3 APIs: Wikipedia, Pageviews e Wikidata. Cada uma é a base para diferentes funções, mas aqui iremos explorar somente três funcionalidades, a título de exemplo. O procedimento de instalação é o mesmo dos anteriores e, para se certificar que fez tudo correto, basta chamar a função na tabela. Veja abaixo como fazer isso. 

Vamos praticar

Vamos começar utilizando a função wikidatafacts. Ela é capaz de extrair palavras relacionados ao termo que você busca dentro de um artigo. É bem interessante pra pegar palavras chaves e incluir em um artigo. Como exemplo, vamos procurar por “dados abertos”.

=WIKIDATAFACTS(“dados abertos”)

Como padrão, se não informado, os resultados retornam para uma busca em inglês. Para especificar o idioma de busca, basta informar:

=WIKIDATAFACTS(“pt: dados abertos”)

Além de pesquisar com termos, é possível indicar o identificador relacionado aquela pesquisa. Ele sempre está ao lado do termo na Wikidata. No caso do termo que estamos buscando, o ID é Q309901.

Aplicando na fórmula:

=WIKIDATAFACTS(“Q309901”)

O resultado deve ser uma lista com metadados de conteúdos relacionados ao termo buscado. Vamos para a próxima.

Agora, queremos links relacionados aos artigos sobre um determinado termo. Eu posso especificar o idioma de retorno dos resultados, o domínio e o tipo de protocolo. Vou mostrar a fórmula e uma aplicação a seguir:

=WIKILINKSEARCH(“idioma: domínio” ; ” protocolo“)

=WIKILINKSEARCH(“pt: *.gov.br” ; “https“)

O asterisco antes do domínio significa que pode trazer qualquer URL que termine com .gov.br. Como resultado, deve aparecer uma lista com vários links que terminam com o domínio que especificamos.

Por último, a fórmula wikipageviews mostra a quantidade de visualizações de uma determinada página em um período específico. A fórmula é bem simples:

=WIKIPAGEVIEWS(“artigo”; “data de início”; “data de término”)

Diferente dos outros, aqui a busca só pode ser feita com termos em inglês. No segundo e terceiro parâmetro, podemos inserir diretamente uma data no formato aaammdd (a=ano, m=mês, d=dia). Ou podemos fazer uso de outras funções para definir esta data dinamicamente. No exemplo abaixo, trabalhamos com a fórmula Today( ) para retornar sempre os dados relativos ao último ano, independente do dia em que a planilha seja consultada.

=WIKIPAGEVIEWS(“water”; “TODAY()-365”; “TODAY()”)

O resultado deve ser uma lista com datas e a quantidade de visualizações para aquele termo naquele dia.

Para ir além…

Todas as ferramentas apresentadas são bem interessantes para ajudar em tarefas que não exigem conhecimentos mais densos de mineração de dados. Porém, pode ser que nenhuma delas sirva para extrair o dado que você precisa, então, para ir além indicamos começar a aprender uma linguagem de programação. Assim você conseguirá ter mais domínio sobre as etapas de raspagem de dados. Se sua escolha for começar com Python, vale a pena ver nosso tutorial Primeiros passos com Python e Pandas.

 

 

 

 

 

 

 

 

One thought on “Raspagem de dados sem programação”

  1. Arthur Correia Santos disse:

    Excelente!
    Ajudou muito.

Deixe um comentário

O seu endereço de e-mail não será publicado.