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
.
##
## 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.