Jak uložit webovou stránku z příkazového řádku

Existuje celá řada způsobů pro ukládání webové stránky do offline souboru. Některé se omezí čistě na HTML, což se hodí třeba pro účely scrapování textového obsahu, jiné ukládají i všechny obrázky a stránku jste pak schopni zobrazit 1:1 i bez internetového připojení.

V tomto článku se nebudu zabývat nástroji s grafickým uživatelským rozhraním. Pro základní ukládání v takovém prostředí vám koneckonců obvykle stačí webový prohlížeč a klávesová zkratka Ctrl+S (Cmd+S).

Podíváme se především na příkazový řádek. Nástroje v něm použité totiž snadno začleníte do dalších skriptů, což se může hodit třeba pro různé SEO analýzy.

Klasika největší – nástroj wget

Nástroj wget najdete nejčastěji v linuxových operačních systémech. Jeho účelem je právě stahování dat z internetu. Zadáte mu URL nějakého souboru a ten vám stáhne do počítače. Podobně jej lze využít ke stažení webových stránek. Stačí zadat přepínač -O s názvem souboru, do kterého chcete stránku uložit:

wget -O soubor.html https://www.example.tld

V mírně upravené modifikaci pak wget stáhne i všechny další stránky do stanovené úrovně, včetně obrázků a jiných zdrojů, to vše uloží do jednoho souboru:

wget -O soubor.html --recursive --level=2 https://www.example.tld

Když není wget, pomůže curl

Na MacOS není wget ve výchozím stavu k dispozici, v některých linuxových systémech taky občas chybí. Můžete jej sice snadno doinstalovat (na MacOS třeba pomocí brew install wget), ale pokud k instalaci nemáte oprávnění, zkuste alternativu.

Nástroj curl slouží coby komunikační prostředek pro různé internetové protokoly a stahování dat je jen jedna z celé široké řady jeho možností. Běžné prohlížení stránky je ve skutečnosti zavolání HTTP metody GET, kterou provedete následovně:

curl -o soubor.html https://www.example.tld/

Monolith a kompletní obsah v jednom souboru

Výše uvedené ukázky mají jeden zásadní problém. Uloží HTML strukturu, ale nechají v ní odkazy na externí zdroje, případně je vůbec neukládají. S řešením přichází nástroj Monolith. Nainstalujete jej pomocí celé řady možností v MacOS, Windows i Linuxu a spustíte jej jednoduchým voláním:

monolith https://www.example.tld/ -o soubor.html

Veškeré externí zdroje stáhne do jednoho souboru, ale učiní je funkčními. V praxi převádí obrázky na base64, stáhne externí fonty, CSS i JavaScript. To se velmi hodí při ukládání stránek, které mají nějakou formu preloaderu.

V dokumentaci k nástroji najdete celou řadu přepínačů, například pro vyloučení webových fontů a obrázků, nastavení JavaScriptu a videa, zpracování cookies a podobně.

Bonus: RCrawler pro scrapování webu v R

Pro analýzy klientských webů jsem si postavil jednoduchý scraper v R Studiu, který využívá Rcrawler. V kódu jej použijete velmi jednoduše:

Rcrawler(Website = "https://www.example.tld", no_cores = 4, no_conn = 4, MaxDepth = 3)

Výsledky si crawler ukládá jednak do paměti, jednak v domovské složce vytvoří adresář, ve kterém postupně ukládá HTML soubory s obsahem všech procházených URL adres. V závislosti na nastavení včetně těch externích. Ty můžete následně dále nějakým způsobem zpracovat. Já to používám například na kontrolu odkazů na webových stránkách při spouštění webu do produkce.

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru