Kapittel 8 Andre eksempler

8.1 Hente ut lenker

Skal vi webcrawle, må vi kunne hente ut lenker fra nettsider. Da kan vi bruke disse igjen inni en ny kode (med read_html) og hente ut informasjon. Dette kan samles i en lang pipe. Under ser vi et eksempel. Den viktigste forskjellen fra tidligere, er at vi bruker html_attr og spesifiserer “href” inni parentesen. Vi kunne også brukt html_attrs for å hente ut flere lenker i samme node.

read_html("https://www.ssb.no/") %>%
  html_node("#nokkeltall-dialog-93203 > a") %>% 
  html_attr("href")
## [1] "/befolkning/statistikker/folkemengde/kvartal"

8.2 Hente ut JSON

Enkelte ganger kan vi finne JSON eller XML i HTML-koden. Skal vi hente informasjon fra dette, må vi bruke xpath. Et eksempel er gitt under fra E24. På denne nettsiden finnes det en graf som er skrevet i Highcharts, som igjen bygger på javascript. Dataene til denne grafen finnes i et script som bygger på en fil lagret i JSON. JSON inneholder strukturert data. Koder under viser et eksempel på hvordan vi henter ut denne JSON-koden. Vi må også bruke jsonlite-pakken for å strukturere koden og putte det inn i en dataframe. Hadde vi jobbet med XML, kunne vi brukt pakken som heter XML.

library(jsonlite)
## 
## Attaching package: 'jsonlite'
## The following object is masked from 'package:purrr':
## 
##     flatten
jsondata <- read_html("https://e24.no/spesial/2020/coronaviruset/kortbruk") %>%
  html_nodes(xpath = '//*[@id="__NEXT_DATA__"]/text()') %>% # xpath til JSON-data på nettsiden.
  html_text() %>%
  fromJSON(., flatten = TRUE) # Parser JSON-data.

datasett <- jsondata$props$pageProps$transData$data # Henter ut data-delen fra listestrukturen.