4.6 Processando documentos

Finalmente, processar documentos significa carregar dados acessíveis em disco e transformar os dados brutos uma base tidy.

Usualmente separamos a estruturação em duas etapas:

  1. transformar arquivos não-estruturados em um arquivos semi-estruturados (e.g. um arquivo HTML em uma tabela mais um conjunto de textos livres) e

  2. transformar arquivos semi-estruturados em uma base analítica (estruturada).

A tarefa de processar as páginas HTML será realizada pelas funções esaj::parse_cjsg() e esaj::run_parser().

4.6.1 Parse CPOSG

O parser da consulta de processos foi escrito de um jeito especial. Uma página de resultados tem vários blocos de informações, entre eles i) dados básicos, ii) partes, iii) movimentações e iv) decisões. Em algumas pesquisas, temos interesse em apenas uma parte desses blocos. O parser foi construído para modular essa captura de informações.

Outra diferença importante é que, nesse caso, salvamos individualmente os resultados do parse em arquivos .rds. Isso é feito para evitar retrabalho, já que esse processo é computacionalmente intensivo e algo de errado pode acontecer no meio da execução.

Para obter a base de dados, basta ler e empilhar os arquivos parciais que foram gerados.

#> Observations: 89
#> Variables: 7
#> $ id        <chr> "00000091520158260558", "00002046520118260420", "00003…
#> $ file      <chr> "data-raw/cposg/00000091520158260558.html", "data-raw/…
#> $ hidden    <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE…
#> $ data      <list> [<tbl_df[13 x 2]>, <tbl_df[14 x 2]>, <tbl_df[13 x 2]>…
#> $ parts     <list> [<tbl_df[3 x 4]>, <tbl_df[5 x 4]>, <tbl_df[3 x 4]>, <…
#> $ movs      <list> [<tbl_df[23 x 2]>, <tbl_df[35 x 2]>, <tbl_df[22 x 2]>…
#> $ decisions <list> [<tbl_df[1 x 2]>, <tbl_df[1 x 2]>, <tbl_df[1 x 2]>, <…

4.6.2 Exercícios

  1. O que faz a função purrr::map_dfr()?
  2. Estude o objeto d_cposg. O que temos na coluna data? E na coluna parts?
  • OBS: Os objetos data, parts, movs e decisions do d_cposg são chamados de list columns.
  1. Qual é o outro parâmetro da função esaj::run_parser(), e o que ele faz?