class: center, middle, title-slide .title[ # Aula 7 - Obtendo dados
Raspagem ] .subtitle[ ## Jornalismo de Dados ] .author[ ### Leonardo Mancini ] .date[ ### 2024 ] --- # Obtendo dados Podemos obter dados: .pull-left[ ** Manualmente ** - Disponibilizados por órgãos públicos, ONGs, institutos de pesquisas, etc. - LAI (Lei de Acesso à Informação) ] .pull-right[ ** Usando computador ** - APIs (Application Programming Interface) - Raspagem de dados ] --- # Dicas agregadores de bases de dados Além da busca e da LAI, há sites que agregam bases de dados tabuladas de diversas fontes. - [Google Data Search](https://datasetsearch.research.google.com/) - [Harvard Dataverse](https://dataverse.harvard.edu/) - [Kaggle](https://www.kaggle.com/) - [Brasil.io](https://brasil.io/home/) - [Base dos dados](https://basedosdados.org/) - [Ipea](https://www.ipea.gov.br/portal/) Para ler artigos acadêmicos: [Google Scholar](scholar.google.com) --- # API API (Application Programming Interface) é a maneira como aplicativos conversam entre si. Uma API pode trocar dados entre aplicativos, de forma organizada e estruturada. .center[  ] --- class: inverse, middle, center # Exemplo --- # Raspagem de dados Raspagem de dados é a técnica de extrair informações de sites de forma automatizada. É a parte mais complexa e "artesanal" da extração, já que cada site é único e pode adotar soluções e estruturas de código diferentes. Há algumas ferramentas que facilitam a raspagem, mas, se o site for realmente complexo, é necessário programar um script específico. --- class: inverse, center, middle # Relembrando HTML --- # Tags (ou, etiquetas) Tags definem a característica de determinado conteúdo. Um elemento HTML é composto de uma _tag_ de abertura, o conteúdo, e uma _tag_ de fechamento. <br> .center[ <img src="./imagens/html_tags.png" width="450px" /> ] --- # Tabelas .center[   ] --- # Tabelas A tag que indica o início de uma tabela é `<table>`. Aninhadas a ela, estão as linhas `<tr>`, e, dentro das linhas, as células `<td>`. .center[  ] Vamos abrir o Google Sheets... --- # Extraindo com Google Sheets Considerem os dados da Wikipedia sobre os vereadores do Rio de Janeiro. [Lista de Vereadores do Rio de Janeiro](https://pt.wikipedia.org/wiki/Lista_de_vereadores_da_cidade_do_Rio_de_Janeiro_(2021-2024) Em uma célula do Google Sheets, digitem: <br> ``` =IMPORTHTML("url", "element", 1) ``` <br> A "url" é o endereço da página que contém a tabela.<br> O "element" é o tipo de elemento que queremos extrair. No caso de tabelas, usamos "table".<br> O "1" é a posição da tabela na página. Se houver mais de uma tabela, podemos mudar o número para 2, 3, etc. --- # Extraindo com Google Sheets A função `IMPORTHTML` aceita, além do elemento "table", o elemento "list". ```r <ul> <li> Esta é uma lista não ordenada</li> </ul> ``` ```r <ol> <li> Esta é uma lista ordenada</li> </ol> ``` Neste caso, a função `IMPORTHTML` ficaria assim: ```r =IMPORTHTML("url", "list", 1) ``` --- # Extraindo com Google Sheets É possível extrair dados usando feeds RSS, que são arquivos XML que contêm informações sobre as últimas notícias ou atualizações de um site. No Google Sheets, usamos a função: ```r =IMPORTFEED("url", "query", "header", "num_items") ``` O "url" é o endereço do feed RSS.<br> O "query" é o tipo de elemento que queremos extrair. No caso de feeds RSS, usamos "feed".<br> O "header" é um valor lógico que indica se a primeira linha contém cabeçalhos.<br> O "num_items" é o número de itens que queremos extrair. [Documentação](https://support.google.com/docs/answer/3093337?hl=pt-br) --- # Extraindo com Google Sheets Extraiam o feed RSS do site da ESPM. Fica aqui: ```r https://www.espm.br/feed/ ``` Não precisamos de nenhum atributo. Podemos usar aplicativos como o Feedly para encontrar feeds RSS de sites que nos interessam e organizar os feeds em categorias. --- class: inverse, middle, center