3.2 Pacotes httr, xml2 e rvest

Esses são os três pacotes mais modernos do R para fazer web scraping.

  • O pacote xml2 tem a finalidade de estruturar arquivos HTML ou XML de forma eficiente, tornando possível a obtenção de tags e seus atributos dentro de um arquivo.

  • O pacote httr é responsável por realizar requisições web para obtenção das páginas de interesse, buscando reduzir ao máximo a complexidade da programação.

  • O pacote rvest é escrito sobre os dois anteriores e por isso eleva ainda mais o nível de especialização para raspagem de dados.

  • Esses pacotes não são suficientes para acessar todo tipo de conteúdo da web. Não discutiremos selenium nesse curso, mas caso queira se aprofundar, acesse aqui e o pacote RSelenium.

3.2.1 GET e POST

  • Uma requisição GET envia uma url ao servidor, possivelmente com alguns parâmetros nessa url (que ficam no final da url depois do ?). O servidor, por sua vez, recebe essa url, processa os parâmetros e retorna uma página HTML para o navegador.

  • A requisição POST envia uma url não modificada para o servidor, mas envia também uma lista de dados preenchidos pelo usuário, que podem ser números, textos ou até imagens. Na maioria dos casos, ao submeter um formulário de um site, fazemos uma requisição POST.

  • O httr possui os métodos GET e POST implementados e são muito similares. A lista de parâmetros enviados pelo usuário pode ser armazenado numa list nomeada, e adicionado ao GET pelo parâmetro query ou no POST pelo parâmetro body.

Exemplo de GET

httr::GET("http://google.com/search", 
          query = list(q = "jurimetria"))
#> Response [http://www.google.com/search?q=jurimetria]
#>   Date: 2018-05-22 14:43
#>   Status: 200
#>   Content-Type: text/html; charset=ISO-8859-1
#>   Size: 38.3 kB
#> <!doctype html><html itemscope="" itemtype="http://schema.org/SearchResu...
#> no Direito. Índice. [esconder]. 1 Histórico; 2 Os Três Prismas da <b>Jur...
#> softwares jurídicos para prever resultados.</span><br></div></div><div c...
#> Webinar: Tabelas Processuais Unificadas On-line. 02 jul. Webinar: Estrut...
#> números e da tecnologia para o jurídico da empresa. Leonardo Barém Leite...
#> <b>Jurimetria</b>.</span><br></div></div><div class="g"><h3 class="r"><a...
#> ayuda a afrontar con fiabilidad el mejor planteamiento procesal.</span><...
#> a todo esforço de pesquisa empírica séria é que ninguém muda aquilo que&...
#> Brasileira de <b>Jurimetria</b>, Marcelo Guedes Nunes, que lançou o&nbsp...

Exemplo de POST

httr::POST("http://httpbin.org/post", 
           body = list(x = "Mãe to na request"), 
           encode = "json")
#> Response [http://httpbin.org/post]
#>   Date: 2018-05-22 14:43
#>   Status: 200
#>   Content-Type: application/json
#>   Size: 429 B
#> {"args":{},"data":"{\"x\":\"M\u00e3e to na request\"}","files":{},"form"...

3.2.2 Exercícios

Use o Inspect:

  1. Qual o método usado na pesquisa de jurisprudência do TJSP?
  2. Qual o método usado na busca avançada de diários de justiça do TJSP?