Introductie tot XPATH

Webscraping in R

Timo Grossenbacher

Instructor

XML Path Language

  • Een pad door een HTML-boom, bijv. //div/p[@class = "blue"] (gelijk aan div > p.blue)
  • Selecteer knooppunten op basis van eigenschappen van andere knooppunten
  • Meer geavanceerde en aangepaste selecties mogelijk
  • Voorbeeld: selecteer elementen op basis van eigenschappen van hun kinderen, bijv. alleen div-elementen met a-knooppunten met klasse special
Webscraping in R

Een eenvoudige HTML-boom waarin alle p-elementen zijn geselecteerd

html %>%
    html_elements(xpath = '//p')
# CSS selector equivalent: p
html %>%
    html_elements(xpath = '//body//p')
# CSS selector equivalent: body p
html %>%
    html_elements(xpath = '/html/body//p')
# CSS selector equivalent: html > body p
Webscraping in R

Een eenvoudige HTML-boom waarin alleen p-elementen onder divs zijn geselecteerd

html %>%
    html_elements(xpath = '//div/p')
# CSS selector equivalent: div > p
Webscraping in R

Een eenvoudige HTML-boom waarin alleen div's met een kind a zijn geselecteerd

html %>%
    html_elements(xpath = '//div[a]')
# CSS selector equivalent: none
Webscraping in R

Syntax: assen, stappen en predicaten

  • Assen: / of //
  • Stappen: HTML-typen zoals span en a
  • Predicaten: [...]
  • Voorbeeld: //span/a[@class = "external"] (CSS: span > a.external)
  • Voorbeeld: //*[@id = "special"]//div (CSS: #special div of *#special div)
Webscraping in R

Laten we oefenen!

Webscraping in R

Preparing Video For Download...