Coleta

Para começar, preciso extrair as notícias que aparecem após uma pesquisa na página de busca da Folha de São Paulo.

Python
R
Webscraping

A primeira etapa deste trabalho, seguindo o fluxo de trabalho do Jornalismo de Dados é a coleta, ou seja, a obtenção dos dados. Para coletar os títulos de reportagens que são o objeto do estudo, foi realizado raspagem (webscraping) da página de busca da Folha de São Paulo.

Foi desenvolvido um código na linguagem de programação Python, coleta as notícias obtidas após pesquisas de alguns termos relacionados à população negra no site da Folha de S. Paulo. São eles: “mulher negra”, mulheres negras, mulher parda, mulheres pardas, homem negro, homens negros, “homem pardo”, “homens pardos”, “afrodescendente”, “afrodescendentes”, “mulata”, “mulato”, “pessoas negras”, “pessoas pardas”, “raciais”

Nota

Não foram pesquisados os termos “homem preto”, “mulher preta” e suas variações no plural. Apesar do trabalho compreender que a população negra é formada por pretos e pardos, a inclusão do adjetivo preto ocasionava a inclusão de notícias com outros contexto (por exemplo, a notícia hipotética sobre um fato com um homem morador Ribeirão Preto).

Webscraping com Python

O código importa as bibliotecas necessárias para realizar a raspagem de dados em uma página da web usando Python.

  • bs4 é a biblioteca BeautifulSoup, usada para extrair dados HTML e XML.

  • selenium é usado para automatizar a interação do navegador com a página da web.

  • webdriver é a API do Selenium para interagir com o navegador.

  • Options são as opções do Chrome WebDriver para personalizar o navegador durante a automação.

  • By é a classe que fornece métodos para localizar elementos na página da web.

  • WebDriverWait é usada para esperar que um elemento específico na página da web seja carregado antes de realizar uma ação.

  • time é usado para pausar a execução do código por um determinado tempo.

  • datetime é a biblioteca Python para trabalhar com datas e horários.

  • pandas é usada para manipulação e análise de dados em Python.

Em resumo, o código define as ferramentas necessárias para interagir com uma página da web, aguardar que elementos específicos sejam carregados e extrair dados da página usando a biblioteca BeautifulSoup.

Repeti o processo de raspagem para todas as URLs de pesquisa de interesse.

Agrupando arquivos com R

Para agrupar os diferentes arquivos gerados na etapa anterior com Python, foi utilizada a linguagem de programação e estatística R, usando o pacote tidyverse:

library(tidyverse)
library(DT)
library(janitor)

df_raw <- bind_rows(
  df01 = read_csv2("dados/folha_afrodescendente.csv"),
  df02 = read_csv2("dados/folha_homemnegro.csv"),
  df03 = read_csv2("dados/folha_homensnegros.csv"),
  df04 = read_csv2("dados/folha_homenspardos.csv"),
  df05 = read_csv2("dados/folha_mulata.csv"),
  df06 = read_csv2("dados/folha_mulato.csv"),
  df07 = read_csv2("dados/folha_mulheresnegras.csv"),
  df08 = read_csv2("dados/folha_mulherespardas.csv"),
  df09 = read_csv2("dados/folha_mulhernegra.csv"),
  df10 = read_csv2("dados/folha_negritude.csv"),
  df11 = read_csv2("dados/folha_pessoasnegras.csv"),
  df12 = read_csv2("dados/folha_pessoaspardas.csv"),
  df13 = read_csv2("dados/folha_raciais.csv"),
  df14 = read_csv2("dados/folha_racial.csv"),
  .id = "pesquisa"
)
write_rds(df_raw, "dados/01_dados_brutos.rds")
df <- df_raw |> clean_names()

df$pesquisa <- gsub("df01", "afrodescendente", df$pesquisa)
df$pesquisa <- gsub("df02", "homem negro", df$pesquisa)
df$pesquisa <- gsub("df03", "homens negros", df$pesquisa)
df$pesquisa <- gsub("df04", "homens pardos", df$pesquisa)
df$pesquisa <- gsub("df05", "mulata", df$pesquisa)
df$pesquisa <- gsub("df06", "mulato", df$pesquisa)
df$pesquisa <- gsub("df07", "mulheres negras", df$pesquisa)
df$pesquisa <- gsub("df08", "mulheres pardas", df$pesquisa)
df$pesquisa <- gsub("df09", "mulher negra", df$pesquisa)
df$pesquisa <- gsub("df10", "negritude", df$pesquisa)
df$pesquisa <- gsub("df11", "pessoas negras", df$pesquisa)
df$pesquisa <- gsub("df12", "pessoas pardas", df$pesquisa)
df$pesquisa <- gsub("df13", "raciais", df$pesquisa)
df$pesquisa <- gsub("df14", "racial", df$pesquisa)
write_rds(df, "dados/02_dados_raspagem_folha.rds")
write_csv2(df, "dados/02_dados_raspagem_folha.csv")

As coletas retornaram 31.513 notícias, conforme a tabela abaixo:

df |> datatable()