4.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 pacoteRSelenium
.
4.2.1 GET
e POST
Uma requisição GET envia uma
url
ao servidor, possivelmente com alguns parâmetros nessaurl
(que ficam no final daurl
depois do?
). O servidor, por sua vez, recebe essaurl
, processa os parâmetros e retorna uma página HTML para o navegador.A requisição
POST
envia umaurl
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çãoPOST
.O
httr
possui os métodosGET
ePOST
implementados e são muito similares. A lista de parâmetros enviados pelo usuário pode ser armazenado numalist
nomeada, e adicionado aoGET
pelo parâmetroquery
ou noPOST
pelo parâmetrobody
.
Exemplo de GET
#> Response [http://www.google.com/search?q=jurimetria]
#> Date: 2019-10-21 11:15
#> Status: 200
#> Content-Type: text/html; charset=ISO-8859-1
#> Size: 45.6 kB
#> <!doctype html><html lang="pt-BR"><head><meta charset="UTF-8"><meta cont...
#> <span class="BNeawe"><a href="/url?q=https://pt.wikipedia.org/wiki/Jurim...
#> function C(){w=null;if(x){var a="/complete/search?client=heirloom-srp&hl...
#> function D(){for(;n.firstChild;)n.removeChild(n.firstChild);r=[];t=-1;z(...
#> (function(){for(var a=+new Date-window.start,b=D(a),d=0,c=0,f=0,n=docume...
Exemplo de POST
#> Response [http://httpbin.org/post]
#> Date: 2019-10-21 11:15
#> Status: 200
#> Content-Type: application/json
#> Size: 518 B
#> {
#> "args": {},
#> "data": "{\"x\":\"M\u00e3e to na request\"}",
#> "files": {},
#> "form": {},
#> "headers": {
#> "Accept": "application/json, text/xml, application/xml, */*",
#> "Accept-Encoding": "deflate, gzip",
#> "Content-Length": "26",
#> "Content-Type": "application/json",
#> ...
4.2.2 Exercícios
Use o Inspect:
- Qual o método usado na pesquisa de jurisprudência do TJSP?
- Qual o método usado na busca avançada de diários de justiça do TJSP?