Xpath - parte 1

Prof. Walmes Marques Zeviani

09 Mar 2017

Objetivo e justificativa

Xpath

Características

Documentação, resumos e recursos online

Documentação do Xpath no W3C

Tutoriais

Folhas de cola (cheat sheet)

Avaliadores online de Xpath

Usando Xpath no R

Cifras

Extrair o título da canção

  1. https://www.cifraclub.com.br/lulu-santos/assim-caminha-humanidade/simplificada.html
  2. Use inspecionar elemento e aponte para o título.
  3. Obtenha o nome do elemento que contém a informação desejada. 4 Obtenha o nome de seus ancestrais imediatos (pai, avô, etc).
  4. Verifique se o elemento possui algum atributo útil para delimitar o escopo.
  5. Leia a página com o R.
  6. Aplique a query xpath criada e verifique o resultado.

Dicas: para inspecionar a página, recorte um fagmento HTML que contenha a informação de interesse e passe o código por um embelezador de HTML (HTML pretty). Exemplos de embelezadores são:

Extrair as cifras dos acordes

Repetir os passos já apresentados.

Solução R das cifras

library(XML)
library(RCurl)

url <- "https://www.cifraclub.com.br/lulu-santos/assim-caminha-humanidade/simplificada.html"

doc <- htmlParse(getURL(url))
summary(doc)
## $nameCounts
## 
##     span        a       li      div   button        i        b 
##      229      224      200      158       80       75       73 
##       ul   script   strong      img    input    label     meta 
##       37       36       31       27       23       18       15 
##     link       hr   option       h3       ol     form       br 
##       12        6        5        4        4        3        2 
##       h1 noscript        p  section    small     body   footer 
##        2        2        2        2        2        1        1 
##       h2     head   header     html      pre   select    style 
##        1        1        1        1        1        1        1 
## textarea    title 
##        1        1 
## 
## $numNodes
## [1] 1283
xp <- "//h1"
xpathSApply(doc, path = xp)
## [[1]]
## <h1>
##   <a href="/">
##     <span class="logo">Cifra Club</span>
##   </a>
## </h1> 
## 
## [[2]]
## <h1 class="t1">Assim Caminha a Humanidade</h1>
xp <- "//div/div/h1"
xpathSApply(doc, path = xp)
## [[1]]
## <h1 class="t1">Assim Caminha a Humanidade</h1>
xpathSApply(doc, path = xp, fun = xmlValue)
## [1] "Assim Caminha a Humanidade"
xp <- "//pre"
xpathSApply(doc, path = xp)
## [[1]]
## <pre>
## Intro 3x: <b>D</b>
## 
## <b>D</b>                         <b>D7+</b>
## Ainda vai levar um tempo
##                             <b>Em</b>
## Pra fechar o que feriu por dentro
##                         <b>Gm</b>
## Natural que seja assim
##                            <b>D</b>
## Tanto pra você quanto pra mim
## 
##                      <b>D7m</b>
## Ainda leva uma cara
## 
## Pra gente poder dar risada
## <b>Em</b>                         <b>Gm</b>
## Assim caminha a humanidade
##                                  <b>D</b>
## Com passos de formiga e sem vontade
##                         <b>Em</b>
## Não vou dizer que foi ruim
##    <b>Gm</b>                    <b>D</b>
## também não foi tão bom assim
##    <b>B7</b>              <b>Em</b>
## Não imagine que te quero mal
## <b>Gm</b>                   <b>D</b>
## Apenas não te quero mais
## 
## Base do solo :D3x
## 
## <b>D</b>                     <b>D7m</b>
##   Ainda leva uma cara
##                 <b>B7</b>
## Pra gente poder dar risada
## <b>Em</b>                         <b>Gm</b>
## Assim caminha a humanidade
##                                 <b>D</b>
## Com passos de formiga e sem vontade
##                         <b>Em</b>
## Não vou dizer que foi ruim
##                          <b>D</b>
## também não foi tão bom assim
##                   <b>Em</b>
## Não imagine que te quero mal
##                      <b>D</b>
## Apenas não te quero mais
## 
##               <b>E7</b>
## Não te quero mais
##      <b>Gm</b>          <b>D</b>
## Não mais, yeeeeaaahh
## 
##               <b>E7</b>
## Não te quero mais
##      <b>Gm</b>          <b>D</b>
## Não mais, nunca mais</pre>
xp <- "//pre/b"
# xpathSApply(doc, path = xp)
xpathSApply(doc, path = xp, fun = xmlValue)
##  [1] "D"   "D"   "D7+" "Em"  "Gm"  "D"   "D7m" "Em"  "Gm"  "D"  
## [11] "Em"  "Gm"  "D"   "B7"  "Em"  "Gm"  "D"   "D"   "D7m" "B7" 
## [21] "Em"  "Gm"  "D"   "Em"  "D"   "Em"  "D"   "E7"  "Gm"  "D"  
## [31] "E7"  "Gm"  "D"

YouTube

url <- "https://www.youtube.com/watch?v=ElvgVlR0bF4"

doc <- htmlParse(getURL(url), encoding = "utf-8")
summary(doc)
## $nameCounts
## 
##   span    div   meta      a     li button   link    img script 
##    294    261     85     73     46     36     26     23     20 
##      p     br     ul     h3  input  label strong     h4   form 
##     19     14     11      7      4      4      4      3      2 
##     h1  style   body     h2   head     hr   html     ol  title 
##      2      2      1      1      1      1      1      1      1 
## 
## $numNodes
## [1] 943
xp <- "//div[@class='watch-view-count']"
xpathSApply(doc, path = xp)
## [[1]]
## <div class="watch-view-count">1.550.838 visualizações</div>
xpathSApply(doc, path = xp, fun = xmlValue)
## [1] "1.550.838 visualizações"

Imóveis

Solução R dos imóveis

url <- "http://www.imovelweb.com.br/apartamentos-venda-centro-curitiba.html"

doc <- htmlParse(url)
summary(doc)
## $nameCounts
## 
##            a          div         span           li          img 
##         1038          915          745          689          417 
##            i           ul       button        input            p 
##          105           87           75           50           50 
##           h4            b       script        label         meta 
##           44           26           24           17           12 
##         form           h2         link       option           td 
##           11            6            6            5            4 
##      section         html     noscript        small       strong 
##            3            2            2            2            2 
##        style         body           br           h1           h5 
##            2            1            1            1            1 
##         head       header           hr       iframe login-button 
##            1            1            1            1            1 
##          nav       select        table        tbody     textarea 
##            1            1            1            1            1 
##        title           tr 
##            1            1 
## 
## $numNodes
## [1] 4355
xp <- "//p/span"
xpathSApply(doc, path = xp)
## [[1]]
## <span class="icon-alert">
##   <i class="fa fa-bell" aria-hidden="true"/>
## </span> 
## 
## [[2]]
## <span>Salvar busca</span> 
## 
## [[3]]
## <span class="icon-dropdopwn">
##   <i class="fa fa-angle-down" aria-hidden="true"/>
## </span> 
## 
## [[4]]
## <span class="icon-alert">
##   <i class="fa fa-check" aria-hidden="true"/>
## </span> 
## 
## [[5]]
## <span>Busca salva</span> 
## 
## [[6]]
## <span>O preço médio no Centro</span> 
## 
## [[7]]
## <span>1 Quarto</span> 
## 
## [[8]]
## <span>2 Quartos</span> 
## 
## [[9]]
## <span>3 Quartos</span> 
## 
## [[10]]
## <span>4 Quartos</span> 
## 
## [[11]]
## <span class="precio-valor  "> R$ 90.000</span> 
## 
## [[12]]
## <span class="precio-valor  "> R$ 265.000</span> 
## 
## [[13]]
## <span class="precio-valor  "> R$ 200.000</span> 
## 
## [[14]]
## <span class="precio-operacion ">
##          <span class="lowercase">A partir de</span>
##      </span> 
## 
## [[15]]
## <span class="precio-valor  ">R$ 436.000</span> 
## 
## [[16]]
## <span class="precio-valor  "> R$ 200.000</span> 
## 
## [[17]]
## <span class="precio-valor  "> R$ 250.000</span> 
## 
## [[18]]
## <span class="precio-valor  "> R$ 421.210</span> 
## 
## [[19]]
## <span class="precio-operacion ">
##          <span class="lowercase">A partir de</span>
##      </span> 
## 
## [[20]]
## <span class="precio-valor  ">R$ 220.000</span> 
## 
## [[21]]
## <span class="precio-valor  "> R$ 305.000</span> 
## 
## [[22]]
## <span class="precio-operacion">
## Valor condominio
## </span> 
## 
## [[23]]
## <span class="precio-valor expensas">R$ 400</span> 
## 
## [[24]]
## <span class="precio-valor  "> R$ 209.000</span> 
## 
## [[25]]
## <span class="precio-valor  "> R$ 162.000</span> 
## 
## [[26]]
## <span class="precio-operacion ">
##          <span class="lowercase">A partir de</span>
##      </span> 
## 
## [[27]]
## <span class="precio-valor  ">R$ 299.520</span> 
## 
## [[28]]
## <span class="precio-valor  "> R$ 520.000</span> 
## 
## [[29]]
## <span class="precio-valor  "> R$ 225.900</span> 
## 
## [[30]]
## <span class="precio-valor  "> R$ 135.000</span> 
## 
## [[31]]
## <span class="precio-operacion ">
##          <span class="lowercase">A partir de</span>
##      </span> 
## 
## [[32]]
## <span class="precio-valor  ">R$ 420.000</span> 
## 
## [[33]]
## <span class="precio-valor  "> R$ 170.000</span> 
## 
## [[34]]
## <span class="precio-valor  "> R$ 370.000</span> 
## 
## [[35]]
## <span class="precio-operacion">
## Valor condominio
## </span> 
## 
## [[36]]
## <span class="precio-valor expensas">R$ 885</span> 
## 
## [[37]]
## <span class="precio-valor  "> R$ 175.000</span> 
## 
## [[38]]
## <span class="precio-operacion ">
##          <span class="lowercase">A partir de</span>
##      </span> 
## 
## [[39]]
## <span class="precio-valor  ">R$ 320.000</span>
xp <- "//p/span[@class='precio-valor  ']"
xpathSApply(doc, path = xp)
## [[1]]
## <span class="precio-valor  "> R$ 90.000</span> 
## 
## [[2]]
## <span class="precio-valor  "> R$ 265.000</span> 
## 
## [[3]]
## <span class="precio-valor  "> R$ 200.000</span> 
## 
## [[4]]
## <span class="precio-valor  ">R$ 436.000</span> 
## 
## [[5]]
## <span class="precio-valor  "> R$ 200.000</span> 
## 
## [[6]]
## <span class="precio-valor  "> R$ 250.000</span> 
## 
## [[7]]
## <span class="precio-valor  "> R$ 421.210</span> 
## 
## [[8]]
## <span class="precio-valor  ">R$ 220.000</span> 
## 
## [[9]]
## <span class="precio-valor  "> R$ 305.000</span> 
## 
## [[10]]
## <span class="precio-valor  "> R$ 209.000</span> 
## 
## [[11]]
## <span class="precio-valor  "> R$ 162.000</span> 
## 
## [[12]]
## <span class="precio-valor  ">R$ 299.520</span> 
## 
## [[13]]
## <span class="precio-valor  "> R$ 520.000</span> 
## 
## [[14]]
## <span class="precio-valor  "> R$ 225.900</span> 
## 
## [[15]]
## <span class="precio-valor  "> R$ 135.000</span> 
## 
## [[16]]
## <span class="precio-valor  ">R$ 420.000</span> 
## 
## [[17]]
## <span class="precio-valor  "> R$ 170.000</span> 
## 
## [[18]]
## <span class="precio-valor  "> R$ 370.000</span> 
## 
## [[19]]
## <span class="precio-valor  "> R$ 175.000</span> 
## 
## [[20]]
## <span class="precio-valor  ">R$ 320.000</span>
x <- xpathSApply(doc, path = xp, fun = xmlValue)

as.integer(gsub("\\D", "", x))
##  [1]  90000 265000 200000 436000 200000 250000 421210 220000 305000
## [10] 209000 162000 299520 520000 225900 135000 420000 170000 370000
## [19] 175000 320000

Veículos

Solução R dos veículos

url <- "https://www.webmotors.com.br/carros/estoque/volkswagen/crossfox?tipoveiculo=carros&marca1=volkswagen&modelo1=crossfox&estadocidade=estoque"

doc <- htmlParse(getURL(url))
summary(doc)
## $nameCounts
## 
##      div     span        a       li   option        i    input 
##      938      808      580      340      335      156      124 
##    label       ul   script   strong       br       h2      img 
##      115       68       44       30       16       16       15 
##     meta   button     link   select        p   iframe     body 
##       15       12        7        7        4        2        1 
##   footer       h1     head   header       hr     html      nav 
##        1        1        1        1        1        1        1 
## noscript       ol    style      sup    title 
##        1        1        1        1        1 
## 
## $numNodes
## [1] 3645
xp <- "//div[@class='price']"
xpathSApply(doc, path = xp)
## list()
## attr(,"class")
## [1] "XMLNodeSet"
x <- xpathSApply(doc, path = xp, fun = xmlValue)
x
## list()
as.integer(gsub("\\D", "", x))
## integer(0)

Jornal

Solução R dos veículos

url <- "http://www.folha.uol.com.br/"
# browseURL(url)

doc <- htmlParse(url)
summary(doc)
## $nameCounts
## 
##        a       li      div     span       ul   script      img 
##      891      805      246      238      137       90       59 
##        i       h3  section   strong       h4    input       h2 
##       42       36       35       35       30       26       22 
##   header    label        p       td     link       br       h5 
##       21       21       18       14       10        5        5 
##      nav       tr     form     meta fieldset   footer       h1 
##        4        4        3        3        2        2        2 
##       ol     body     head     html   legend noscript    small 
##        2        1        1        1        1        1        1 
##    table    tbody    tfoot     time    title 
##        1        1        1        1        1 
## 
## $numNodes
## [1] 2819
xp <- "//h3"
xpathSApply(doc, path = xp)
## [[1]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Temer cobra R$ 1,6 mi de centrais sindicais por danos em ministério
##          </h3> 
## 
## [[2]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Presidente se irrita com Serraglio e avalia opção para dar foro a Loures
##          </h3> 
## 
## [[3]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              É melhor alguém condenado do que ninguém, diz Moro sobre delações
##          </h3> 
## 
## [[4]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Senado aprova investigados na Lava Jato para Conselho de Ética
##          </h3> 
## 
## [[5]]
## <h3 data-vr-excerpttitle="" class="super">
##              Moradores disputam comida estragada por lama após chuvas em PE
##          </h3> 
## 
## [[6]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Na periferia de Maceió, casal <br/>e dois filhos morrem soterrados
##          </h3> 
## 
## [[7]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Unicamp aprova cotas raciais e para escola pública a partir de 2019
##          </h3> 
## 
## [[8]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Desorientado, irmão de Suzane von Richthofen é levado a hospital
##          </h3> 
## 
## [[9]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              TJ extingue processo, e Doria perde opção para recolher usuário à força
##          </h3> 
## 
## [[10]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Governo do Rio propõe teto de gastos para os três poderes
##          </h3> 
## 
## [[11]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Governo adia votação da<br/> reforma trabalhista no Senado
##          </h3> 
## 
## [[12]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Roraima e ONU descartam campo de refugiados para venezuelanos
##          </h3> 
## 
## [[13]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Países da OEA querem criar grupo para mediar diálogo na Venezuela
##          </h3> 
## 
## [[14]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              EUA testam com sucesso sistema contra mísseis norte-coreanos
##          </h3> 
## 
## [[15]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Advogado de Trump deve depor sobre suposto elo com Rússia
##          </h3> 
## 
## [[16]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Ariana Grande se apresentará no próximo domingo em Manchester
##          </h3> 
## 
## [[17]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Premiê belga sofre dano auditivo após princesa dar tiro de largada
##          </h3> 
## 
## [[18]]
## <h3 data-vr-excerpttitle="">
##              
##              
##                          
##              Zara pagará R$ 5 mi por descumprir acordo com Ministério Público
##          </h3> 
## 
## [[19]]
## <h3 data-vr-excerpttitle="">
##                      Sofria bullying de tudo, afirma o músico<br/> Junior Lima</h3> 
## 
## [[20]]
## <h3 data-vr-excerpttitle="">
##                      Pedalar é persistir; veja cinco verdades para o iniciante</h3> 
## 
## [[21]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Ditador do Panamá durante a Guerra Fria, Manuel Noriega morre aos 83
##                  </h3> 
## 
## [[22]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Morre em SP o espanhol Belarmino Iglesias, fundador do grupo Rubaiyat
##                  </h3> 
## 
## [[23]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Após perder amistosos da seleção, Globo demite diretor de esporte
##                  </h3> 
## 
## [[24]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Roland Garros expulsa tenista que tentou beijar repórter à força
##                  </h3> 
## 
## [[25]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Gentili defende 'separar público do privado' após vídeo contra deputada
##                  </h3> 
## 
## [[26]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Instagram é a pior rede social para saúde mental de jovens, diz pesquisa
##                  </h3> 
## 
## [[27]]
## <h3 data-vr-excerpttitle="">
## <i class="sprite icon-photo"/>                                               
##                      
##                      Noiva convida apenas amigos para ensaio de casamento e fotos viralizam
##                  </h3> 
## 
## [[28]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Dupla de Marrone, Bruno pede desculpas por embriaguez em show
##                  </h3> 
## 
## [[29]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Benjamin Millepied, marido de Natalie Portman, moderniza o balé
##                  </h3> 
## 
## [[30]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Sorveteria Bacio di Latte é líder entre paulistanos, mostra Datafolha
##                  </h3> 
## 
## [[31]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Quatro varejistas dividem posto de melhor loja de departamento
##                  </h3> 
## 
## [[32]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Folha promove debate sobre a mata atlântica no Dia do Meio Ambiente
##                  </h3> 
## 
## [[33]]
## <h3 data-vr-excerpttitle="">
##                                              
##                      
##                      Acidentes de trânsito custaram 2,3% do PIB do Brasil em 2016, diz estudo
##                  </h3> 
## 
## [[34]]
## <h3>Reportagens</h3> 
## 
## [[35]]
## <h3 class="sprite ofertas_do_dia"><span class="white"><i class="sprite offer"/></span> Ofertas do dia</h3> 
## 
## [[36]]
## <h3>
##   <a href="http://publifolha.com.br/">
##     <span class="sprite icon-publifolha">Publifolha</span>
##   </a>
## </h3>
xpathSApply(doc, path = xp, fun = xmlValue)
##  [1] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tTemer cobra R$ 1,6 mi de centrais sindicais por danos em ministério\n\t\t\t"                 
##  [2] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tPresidente se irrita com Serraglio e avalia opção para dar foro a Loures\n\t\t\t"            
##  [3] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tÉ melhor alguém condenado do que ninguém, diz Moro sobre delações\n\t\t\t"                   
##  [4] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tSenado aprova investigados na Lava Jato para Conselho de Ética\n\t\t\t"                      
##  [5] "\n\t\t\t\tMoradores disputam comida estragada por lama após chuvas em PE\n\t\t\t"                                                          
##  [6] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tNa periferia de Maceió, casal e dois filhos morrem soterrados\n\t\t\t"                       
##  [7] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tUnicamp aprova cotas raciais e para escola pública a partir de 2019\n\t\t\t"                 
##  [8] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tDesorientado, irmão de Suzane von Richthofen é levado a hospital\n\t\t\t"                    
##  [9] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tTJ extingue processo, e Doria perde opção para recolher usuário à força\n\t\t\t"             
## [10] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tGoverno do Rio propõe teto de gastos para os três poderes\n\t\t\t"                           
## [11] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tGoverno adia votação da reforma trabalhista no Senado\n\t\t\t"                               
## [12] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tRoraima e ONU descartam campo de refugiados para venezuelanos\n\t\t\t"                       
## [13] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tPaíses da OEA querem criar grupo para mediar diálogo na Venezuela\n\t\t\t"                   
## [14] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tEUA testam com sucesso sistema contra mísseis norte-coreanos\n\t\t\t"                        
## [15] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tAdvogado de Trump deve depor sobre suposto elo com Rússia\n\t\t\t"                           
## [16] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tAriana Grande se apresentará no próximo domingo em Manchester\n\t\t\t"                       
## [17] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tPremiê belga sofre dano auditivo após princesa dar tiro de largada\n\t\t\t"                  
## [18] "\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\tZara pagará R$ 5 mi por descumprir acordo com Ministério Público\n\t\t\t"                    
## [19] "\n\t\t\t\t\t\tSofria bullying de tudo, afirma o músico Junior Lima"                                                                        
## [20] "\n\t\t\t\t\t\tPedalar é persistir; veja cinco verdades para o iniciante"                                                                   
## [21] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDitador do Panamá durante a Guerra Fria, Manuel Noriega morre aos 83\n\t\t\t\t\t"    
## [22] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tMorre em SP o espanhol Belarmino Iglesias, fundador do grupo Rubaiyat\n\t\t\t\t\t"   
## [23] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tApós perder amistosos da seleção, Globo demite diretor de esporte\n\t\t\t\t\t"       
## [24] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tRoland Garros expulsa tenista que tentou beijar repórter à força\n\t\t\t\t\t"        
## [25] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tGentili defende 'separar público do privado' após vídeo contra deputada\n\t\t\t\t\t" 
## [26] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tInstagram é a pior rede social para saúde mental de jovens, diz pesquisa\n\t\t\t\t\t"
## [27] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tNoiva convida apenas amigos para ensaio de casamento e fotos viralizam\n\t\t\t\t\t"  
## [28] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDupla de Marrone, Bruno pede desculpas por embriaguez em show\n\t\t\t\t\t"           
## [29] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tBenjamin Millepied, marido de Natalie Portman, moderniza o balé\n\t\t\t\t\t"         
## [30] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tSorveteria Bacio di Latte é líder entre paulistanos, mostra Datafolha\n\t\t\t\t\t"   
## [31] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tQuatro varejistas dividem posto de melhor loja de departamento\n\t\t\t\t\t"          
## [32] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tFolha promove debate sobre a mata atlântica no Dia do Meio Ambiente\n\t\t\t\t\t"     
## [33] "\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tAcidentes de trânsito custaram 2,3% do PIB do Brasil em 2016, diz estudo\n\t\t\t\t\t"
## [34] "Reportagens"                                                                                                                               
## [35] " Ofertas do dia"                                                                                                                           
## [36] "Publifolha"
trimws(xpathSApply(doc, path = xp, fun = xmlValue))
##  [1] "Temer cobra R$ 1,6 mi de centrais sindicais por danos em ministério"     
##  [2] "Presidente se irrita com Serraglio e avalia opção para dar foro a Loures"
##  [3] "É melhor alguém condenado do que ninguém, diz Moro sobre delações"       
##  [4] "Senado aprova investigados na Lava Jato para Conselho de Ética"          
##  [5] "Moradores disputam comida estragada por lama após chuvas em PE"          
##  [6] "Na periferia de Maceió, casal e dois filhos morrem soterrados"           
##  [7] "Unicamp aprova cotas raciais e para escola pública a partir de 2019"     
##  [8] "Desorientado, irmão de Suzane von Richthofen é levado a hospital"        
##  [9] "TJ extingue processo, e Doria perde opção para recolher usuário à força" 
## [10] "Governo do Rio propõe teto de gastos para os três poderes"               
## [11] "Governo adia votação da reforma trabalhista no Senado"                   
## [12] "Roraima e ONU descartam campo de refugiados para venezuelanos"           
## [13] "Países da OEA querem criar grupo para mediar diálogo na Venezuela"       
## [14] "EUA testam com sucesso sistema contra mísseis norte-coreanos"            
## [15] "Advogado de Trump deve depor sobre suposto elo com Rússia"               
## [16] "Ariana Grande se apresentará no próximo domingo em Manchester"           
## [17] "Premiê belga sofre dano auditivo após princesa dar tiro de largada"      
## [18] "Zara pagará R$ 5 mi por descumprir acordo com Ministério Público"        
## [19] "Sofria bullying de tudo, afirma o músico Junior Lima"                    
## [20] "Pedalar é persistir; veja cinco verdades para o iniciante"               
## [21] "Ditador do Panamá durante a Guerra Fria, Manuel Noriega morre aos 83"    
## [22] "Morre em SP o espanhol Belarmino Iglesias, fundador do grupo Rubaiyat"   
## [23] "Após perder amistosos da seleção, Globo demite diretor de esporte"       
## [24] "Roland Garros expulsa tenista que tentou beijar repórter à força"        
## [25] "Gentili defende 'separar público do privado' após vídeo contra deputada" 
## [26] "Instagram é a pior rede social para saúde mental de jovens, diz pesquisa"
## [27] "Noiva convida apenas amigos para ensaio de casamento e fotos viralizam"  
## [28] "Dupla de Marrone, Bruno pede desculpas por embriaguez em show"           
## [29] "Benjamin Millepied, marido de Natalie Portman, moderniza o balé"         
## [30] "Sorveteria Bacio di Latte é líder entre paulistanos, mostra Datafolha"   
## [31] "Quatro varejistas dividem posto de melhor loja de departamento"          
## [32] "Folha promove debate sobre a mata atlântica no Dia do Meio Ambiente"     
## [33] "Acidentes de trânsito custaram 2,3% do PIB do Brasil em 2016, diz estudo"
## [34] "Reportagens"                                                             
## [35] "Ofertas do dia"                                                          
## [36] "Publifolha"
# xp <- "//a/h3"
# trimws(xpathSApply(doc, path = xp, fun = xmlValue))
#
# xp <- "//div[@class='item']/a/h3"
# trimws(xpathSApply(doc, path = xp, fun = xmlValue))
#
# xp <- "//*[@data-vr-contentbox='']/a/h3"
# trimws(xpathSApply(doc, path = xp, fun = xmlValue))

# Vetor de queries.
xp <- c(principal = "//header/h1/a",
        outras = "//*[@data-vr-contentbox='']/a/h3")
trimws(xpathSApply(doc, path = xp, fun = xmlValue))
##  [1] "Fachin autoriza Temer a prestar depoimento por escrito à PF"             
##  [2] "Temer cobra R$ 1,6 mi de centrais sindicais por danos em ministério"     
##  [3] "Presidente se irrita com Serraglio e avalia opção para dar foro a Loures"
##  [4] "É melhor alguém condenado do que ninguém, diz Moro sobre delações"       
##  [5] "Senado aprova investigados na Lava Jato para Conselho de Ética"          
##  [6] "Moradores disputam comida estragada por lama após chuvas em PE"          
##  [7] "Na periferia de Maceió, casal e dois filhos morrem soterrados"           
##  [8] "Unicamp aprova cotas raciais e para escola pública a partir de 2019"     
##  [9] "Desorientado, irmão de Suzane von Richthofen é levado a hospital"        
## [10] "TJ extingue processo, e Doria perde opção para recolher usuário à força" 
## [11] "Governo do Rio propõe teto de gastos para os três poderes"               
## [12] "Governo adia votação da reforma trabalhista no Senado"                   
## [13] "Roraima e ONU descartam campo de refugiados para venezuelanos"           
## [14] "Países da OEA querem criar grupo para mediar diálogo na Venezuela"       
## [15] "EUA testam com sucesso sistema contra mísseis norte-coreanos"            
## [16] "Advogado de Trump deve depor sobre suposto elo com Rússia"               
## [17] "Ariana Grande se apresentará no próximo domingo em Manchester"           
## [18] "Premiê belga sofre dano auditivo após princesa dar tiro de largada"      
## [19] "Zara pagará R$ 5 mi por descumprir acordo com Ministério Público"        
## [20] "Ditador do Panamá durante a Guerra Fria, Manuel Noriega morre aos 83"    
## [21] "Morre em SP o espanhol Belarmino Iglesias, fundador do grupo Rubaiyat"   
## [22] "Após perder amistosos da seleção, Globo demite diretor de esporte"       
## [23] "Roland Garros expulsa tenista que tentou beijar repórter à força"        
## [24] "Gentili defende 'separar público do privado' após vídeo contra deputada" 
## [25] "Instagram é a pior rede social para saúde mental de jovens, diz pesquisa"
## [26] "Noiva convida apenas amigos para ensaio de casamento e fotos viralizam"  
## [27] "Dupla de Marrone, Bruno pede desculpas por embriaguez em show"           
## [28] "Benjamin Millepied, marido de Natalie Portman, moderniza o balé"         
## [29] "Sorveteria Bacio di Latte é líder entre paulistanos, mostra Datafolha"   
## [30] "Quatro varejistas dividem posto de melhor loja de departamento"          
## [31] "Folha promove debate sobre a mata atlântica no Dia do Meio Ambiente"     
## [32] "Acidentes de trânsito custaram 2,3% do PIB do Brasil em 2016, diz estudo"

Resumo

Próxima semana

Referências