Moderní tvorba webových aplikací

O webu

Stažení dynamického webu

Jak stáhnout celou webovou stránku a převést ji do statické HTML podoby.

5 minut

Z nejrůznějších důvodů může být vhodné, aby celý web byl ve statických souborech:

  • rychlost,
  • nenáročnost na hosting,
  • plnohodnotná offline varianta webu

Tvorba statického webu je poměrně náročná na údržbu. Společné prvky stránek jako hlavička, menu nebo patička je nutné nějakým způsobem synchronisovat mezi sebou.

Jedna z možností tak může být využití klasického redakčního systému a uložení jeho výstupu.

HTTrack

Program HTTrack dokáže projít zadanou URL a stáhnout veškerý obsah, na který vedou odkazy.

Stáhnout

Pokud stránka rozlišuje mezi návštěvníky na základě HTTP hlavičky user-agent, je dobré tuto hodnotu změnit na podobu obvyklou pro dnešní internetové prohlížeče.

Nastavit tuto hlavičku jde v nabídce Předvolby:

Předvolby HTTrack

Po zadání požadované URL by mělo začít stahování:

Stahování pomocí HTTrack

Stáhnout rozsáhlejší web může trvat i několik desítek minut.

Před začátkem stahování je dobré dát pozor na omezení úrovně domén, které se budou stahovat. Typicky pouze na doménu webu, který je cílem stáhnout.

Jinak HTTrack dokáže stahovat i stránky z externích odkazů, takže nakonec může stáhnout „celý internet“.

Stahování jecas.cz s externími zdroji nebylo dokončeno ani po 8 hodinách:

Stahování pomocí HTTrack

URL bez „.html“

HTTrack standardně stahuje obsah do .*html souborů, na které potom vedou i odkazy. Pokud je cílem mít odkazy bez HTML koncovky, dá se využít přepis adres pomocí mod_rewrite a v souborech hromadně změnit cíle všech odkazů (href).

Soubor .htaccess

Následující obsah v .htaccess zajistí, že se po zadání example.com/obsah zobrazí obsah stránky obsah.html.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+)$    $1.html    [L]

Pro stránky v podadresářích.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [NC,L]

Nahrazení .html v odkazech

Odchytit všechny výskyty .html v běžných cílech odkazu jde následujícím regulárním výrazem:

href="([A-z0-9\-]*)\.html"

Vyhovující href se nahradí za:

href="$1"

Pro podadresáře:

href="(\.\.\/[A-z0-9\-\/]*)\.html"
href="(\.\.\/\.\.\/[A-z0-9\-\/]*)\.html"

Nástroj wget

Stáhnout celé stránky jde i nástrojem wget. Ve Windows k tomu jde použít program Cygwin a následně při instalaci nechat nainstalovat balíček wget.

Cygwin wget package

Příkaz pro stažení obsahu stránky může vypadat následovně:

wget -np -e robots=off --mirror --domains=example.com http://example.com

Stažení cizí stránky

Kromě vlastních webů jde těmito postupy pochopitelně rovněž stahovat stránky cizí.

Pokud se stahování nebude dít ve velké míře a opakovaně, provozovatel webu si toho nejspíš nevšimne a v zásadě mu to ani nemusí moc vadit.

Stažení celého webu se nároky na server příliš neliší od situace, kdy by si člověk celý web proklikal.

Někteří autoři své weby přímo nabízí ke stažení:

Typicky si ale nepřejí další šíření – tj. publikování staženého obsahu na jiném webu. To bývá problém kvůli vyhledávačům, protože vzniká duplicitní obsah.

Související články

Prázdný řádek na konci souboru

Proč by textové soubory měly končit prázdným řádkem.

3 minuty

Jak používat git rebase

Proč a jak používat git rebase pro přehlednou historii v Gitu.

5 minut

Více Git větví vedle sebe

Jak spustit více větví jednoho repositáře vedle sebe.

3 minuty

Jak v praxi používat Git

Jak rychle a efektivně používat versovací systém Git.

9 minut

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025