Een website downloaden of kopie maken van een webpagina

Noud van Kruysbergen
0

Wil je een kopie maken van een webpagina of meerdere webpagina’s? Met behulp van wget kun je zelfs hele websites downloaden, maar pas wel op dat je niet teveel downloadt. Met de volgende instructies zorg je dat je een goede kopie maakt en probeert je pc niet het hele internet te downloaden.

Om een kopie te kunnen maken hoef je alleen maar de website te kunnen openen – net zoals elke bezoeker. Om de pagina(‘s) volledig op te slaan, gebruik je wget. Vrijwel elke Linux-distributie heeft dat in zijn pakketbronnen en voor Windows heeft het project een installer en is er een macOS pakket.

website downloaden kopie webpagina maken wget opties kopieren

Het beschrijven van alle functies en parameters van wget gaat te ver, de tool is als een Zwitsers zakmes. Hieronder beschrijven we de belangrijkste instellingen voor het klonen van een website.

Als voorbeeld en om zelf te oefenen is de ‘Beginner HTML Site’ van Mozilla goed geschikt, die je vindt op https://mdn.github.io/beginner-html-site-styled/.

Kopie van webpagina maken

De meest eenvoudige vorm van wget om een pagina te downloaden is wget gevolgd door het webadres:

wget https://mdn.github.io/beginner-html-site-styled/

Het resultaat is wat uitvoer van wget en het downloaden van het bestand index.html. Dat bestand kun je openen met een normale browser, maar helaas ziet de kopie er nog niet uit als het origineel. De inhoud van de tekst is er, maar die heeft vrijwel geen opmaak en de afbeelding ontbreekt ook.

download hele website webpagina compleet offline bewaren

Links de originele pagina, rechts de eerste poging tot kopiëren. De tekst is er, maar verder lijken de pagina’s niet erg op elkaar.

De uiteindelijke vorm van wget om de volledige pagina te downloaden is:

wget -p -nH -H -k -E »https://mdn.github.io/beginner-html-site-styled/

Opties van wget uitgelegd

Waar de opties -p -nH -H -k -E  voor nodig zijn en wat ze doen leggen we hier kort uit.

  • -p  : met deze parameter downloadt wget niet alleen de gevraagde website, maar ook alle bronnen die nodig zijn voor de weergave, zoals stylesheets, lettertypen en afbeeldingen – voor zover daar door de betreffende HTML-code naar gerefereerd wordt.
  • -nH : dit zorgt ervoor dat de map waarin wget alles opslaat als je -p gebruikt een verkorte naam krijgt. Dat is vaak nuttig als er toch maar één domein gekloond wordt.
  • -H : zorgt ervoor dat het programma ook bronnen (zoals lettertypen) downloadt die van andere hosts worden geladen. De voorbeeldpagina van Mozilla dowloadt bijvoorbeeld een lettertype van fonts.gstatic.com.
  • -k : zorgt dat de externe bronnen die met -H worden gedownload, in de gedownloade versie van de pagina uit de lokale map worden gehaald. Het zet daarbij ook absolute links binnen hetzelfde domein om in relatieve links.
  •  -E : voegt extensies zoals .css toe aan bestandsnamen en past speciale symbolen zoals vraagtekens (waardoor browsers denken dan het om een query gaat) aan om problemen te vermijden.

Na een website downloaden met deze opties is die niet meer te onderscheiden van de originele pagina, hoewel de browser alle bronnen van de eigen schijf laadt. De bestanden kunnen dus ook in de documenten-root van gangbare webservers worden gezet en worden dan op de juiste manier uitgeleverd. Dat mag je natuurlijk alleen doen als je je eigen website kopieert en niet de site van een derde partij, zoals in het voorbeeld hier.

 


Blijf op de hoogte van de nieuwste workshops en tips!
Schrijf je in voor de nieuwsbrief:


 

Complete website downloaden

Het voorbeeld hierboven gaat om één pagina. De meeste websites bestaan uit meerdere subpagina’s die aan elkaar gelinkt zijn, bijvoorbeeld via een menu. Ook die kan wget downloaden door recursief van link naar link te gaan.

Daarbij moet je wel oppassen, zodat je pc niet het hele internet probeert te downloaden. Anders raakt niet alleen je eigen internetlijn overbelast, maar kun je ook anti-DDOS-mechanismen op webservers activeren die je ip-adres blokkeren. Een site als Wikipedia blokkeert wget zelfs volledig om onzorgvuldige wget-experimenten te voorkomen.

Gebruik behalve de opties hierboven de volgende extra opties voor een website downloaden, maar pas dus op met de waarden!

  • -w : bepaalt hoeveel seconden wget moet wachten tussen twee requests, bijvoorbeeld -w 1. Aanvullend of als alternatief kun je –limit-rate, –quota en –random-wait opzoeken.
  • -r : zorgt dat wget ook links volgt naar andere pagina’s. Standaard volgt wget tot vijf links na elkaar, maar dat kan veel te veel zijn! Of eventueel te weinig. Gebruik dit dus altijd in combinatie met –l .
  • – l : bepaalt hoe veel links diep wget volgt, bijvoorbeeld -l 2 voor 2 recursieve niveaus diep. Begin voorzichtigheidshalve vanaf 1.

De opdracht bij het voorbeeld ziet er dan uit als

wget -p -H -k -E -w 1 -r -l 1 https://mdn.github.io/beginner-html-site-styled/

De gelinkte webpagina met het manifesto wordt nu ook gedownload van mozilla.org. We laten -nH weg, omdat het bij aanvragen via meerdere domeinen meer zin heeft om wget ook de bijpassende lokale mappen aan te laten maken.

wget opties parameters webpagina downloaden

Er zijn 64 bestanden geladen, en de links in 6 bestanden zijn aangepast – en klaar is de website downloaden.

In de praktijk

Hoe ver je komt met de hier beschreven parameters hangt af van de website. Problematisch zijn websites die veel gebruik maken van JavaScript of zeer actuele webtechnieken. Het 24 jaar oude programma is echter nog steeds in ontwikkeling en er wordt ook aan wget2 gewerkt.

Maar zelfs de huidige versie kan al goed van pas komen. Je kunt bijvoorbeeld oudere websites bewaren voordat ze voorgoed verdwijnen. Handig voor die blog van de lang vervlogen grote reis, de website van een oud studentenproject of de startpagina van de bruiloft inclusief het RSVP-formulier.

Er zijn bovendien nog veel meer parameters. Daarmee kun je ­diverse problemen voorkomen en ook complexere blogs, forums en uitgebreide websites ­downloaden.

(Informatie afkomstig uit het artikel van Sylvester Tremmel en Noud van Kruysbergen, c’t magazine 1-2/2020, p. 116)

Lees uitgebreide workshops en informatie op je gemak in c't magazine jul/2021

Deel dit artikel

Lees ook

Website performance optimaliseren deel 1: data reduceren

Interactieve elementen op je website zoals animaties, video’s en high-res foto’s zijn natuurlijk prachtig, maar maakt hem wel traag. We laten zien ho...

Pdf vergelijken – verschillen tussen pdf-bestanden vinden

Verschillende versies van een pdf vergelijken kan snel en betrouwbaar. Gebruik deze programma's om een pdf te vergelijken, die gratis zijn of weinig k...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er