Navigeren in HTML

Webscraping in R

Timo Grossenbacher

Instructor

HTML is als een boom

<html>
  <body>
    <div>
      <p>De eerste alinea.</p>
    </div>
    <div>
      Geen echte alinea,
      maar met een <a href="#">link</a>.
    </div>
    <p>Een alinea zonder
      omvattende div.</p>
  </body>
</html>

HTML-boom

Webscraping in R

HTML is als een boom

<html>
  <body>
    <div>
      <p>De eerste alinea.</p>
    </div>
    <div>
      Geen echte alinea,
      maar met een <a href="#">link</a>.
    </div>
    <p>Een alinea zonder
      omvattende div.</p>
  </body>
</html>

HTML-boom 2

Webscraping in R

HTML is als een boom

<html>
  <body>
    <div>
      <p>De eerste alinea.</p>
    </div>
    <div>
      Geen echte alinea,
      maar met een <a href="#">link</a>.
    </div>
    <p>Een alinea zonder
      omvattende div.</p>
  </body>
</html>

HTML-boom 3

Webscraping in R

Navigeren door de boom met rvest

<html>
  <body>
    <div>
      <p>De eerste alinea.</p>
    </div>
    <div>
      Geen echte alinea,
      maar met een <a href="#">link</a>.
    </div>
    <p>Een alinea zonder
      omvattende div.</p>
  </body>
</html>
html <- read_html(html_document)

html_children(html)
{xml_nodeset (1)}
[1] <body>\n    <div>\n  < ...
html %>% html_children()
html %>% html_children() %>% html_text()
[1] "\n    \n      De eerste alinea.\n   
\n    \n      Geen echte alinea, \n      
maar met een link.\n    \n    Een alinea ...
Webscraping in R

Navigeren naar nodes met selectors

<html>
  <body>
    <div>
      <p>De eerste alinea.</p>
    </div>
    <div>
      Geen echte alinea,
      maar met een <a href="#">link</a>.
    </div>
    <p>Een alinea zonder
      omvattende div.</p>
  </body>
</html>
html <- read_html(html_document)

html %>% html_element('body')
{xml_nodeset (1)}
[1] <body>\n    <div>\n  < ...
html %>% html_elements('div p')
{xml_nodeset (1)}
[1] <p>De eerste alinea.</p>
Webscraping in R

Navigeren naar nodes met selectors

<html>
  <body>
    <div>
      <p>De eerste alinea.</p>
    </div>
    <div>
      Geen echte alinea,
      maar met een <a href="#">link</a>.
    </div>
    <p>Een alinea zonder
      omvattende div.</p>
  </body>
</html>
html %>% html_elements('p')
{xml_nodeset (2)}
[1] <p>De eerste alinea.</p>
[2] <p>Een alinea zonder omvatt...
html %>% html_elements('div') %>% 
    html_elements('p')
{xml_nodeset (1)}
[1] <p>De eerste alinea.</p>
Webscraping in R

Attributen extraheren

html %>%
    html_element('a') %>%
    html_attr('href')
[1] #
html %>%
    html_element('a') %>%
    html_attrs()
href 
 "#"
Webscraping in R

Laten we dit doen!

Webscraping in R

Preparing Video For Download...