Web Scraping
Dette er et eksempel på en scraper, der finder alle links på en side, og skriver deres URL ud i konsollen. Den benytter to pakker fra npm, så hele systemet ikke skal programmeres op fra grunden. Pakken axios benyttes i eksemplet til at arbejde med http requests, og cheerio bruges til at parse html strukturen, der returneres fra serveren, og uddrage de data man er interesseret i at arbejde videre med i programmet. Disse pakker skal installeres fra npm for at eksemplet kan eksekveres på din maskine.
Først skal der laves et projekt så node kan finde ud af at køre programmet, og har en package.json fil til at holde styr på projektet og afhængigheder af biblioteksmoduler.
Start med at lave en mappe, som kan indeholde dit projekt. Kald den f.eks. web-scraping.
I denne mappe skal du køre følgende kommando, for at oprette projekt filen package.json.
Dernæst har du mulighed for at installere disse afhængigheder.
Du burde nu have en package.json fil, der ser nogenlunde sådan ud:
Bemærk de to pakker der er listet under afhængigheder.
Derefter skal du oprette filen simple-scraper.js med følgende indhold.
Nu kan du køre eksemplet med denne kommando:
Async / await version
Her er et eksempel med samme funktionalitet, men hvor der bruges async / await syntaks i stedet for promise.then().
Materiale
NPM pakker
Her er en række pakker, der kan bruges til at lave scraping af websider.
Javascript emner
- Promise basics
- Async/await
- The Pitfalls of Async/Await in Array Loops
- Why Axios Is Better Than Node-Fetch
Tutorial
Denne tutorial er et eksempel på hvordan man kan hente en side med links til amerikanske præsidenter fra wikipedia, og ved at følge disse links hente de enkelte præsidenters navne og fødselsdage.
Websider der anvendes i eksemplet:
- List of presidents of the United States listen af præsidenter og deres links hentes fra denne side.
- George Washington er et eksempel på en side der beskriver en specifik præsident.