pondělí 16. května 2011

Stažení webu pro offline použití pomocí wget

Pokud se patlám třeba s Pythonem a PyGTK, potřebuji mít dokumentaci neustále po ruce. S netbookem nejsem vždy online, a tak stahuji weby s dokumentací na svůj disk. Například takto:

wget --recursive --page-requisites --adjust-extension --convert-links --domains developer.gnome.org --no-parent http://developer.gnome.org/pygtk/stable/

Abych k tomu alespoň něco napsal:

--recursive / -r        - stahuje rekurzivně
--page-requisites / -p  - stáhne všechny soubory potřebné pro správné zobrazení stránky
--adjust-extension / -E - postará se o to, aby stažené soubory měly patřičné koncovky. Pokud souboru chybí koncovka .html, přidá ji, soubory s css styly dostanou koncovku .css. Pokud ale budete stažený web aktualizovat rozdílovou metodou, budou se upravené soubory vždy stahovat znovu, i když se jinak nezměnily.
--convert-links / -k    - zkonvertuje odkazy v dokumentech na lokální, pokud existují
--domains= / -D         - seznam domén, které mají být následovány
--no-parent / -np       - nesledovat při rekurzi nadřazené adresáře
a nakonec adresa webu, který chci stáhnout


2 komentáře:

  1. Dekuji za tip. Vyzkouseno a funguje. Pouzivam ho na zalohovani webovych stranek starsich her aby se informace neztratily v propadisti dejin.

    Mirne jsem modifikoval a udelal skriptik. Trochu me prekvapilo, ze wget nejak nechape ~ jako home uzivatele a zatvrzele vytvari adresar ~ v domovske slozce. Musel jsem tedy pouzit promenou $HOME

    #!/bin/bash
    echo Zadejte adresu
    read F
    wget --directory-prefix=""$HOME"/Stažené/weby-offline/" --recursive --page-requisites --adjust-extension --convert-links "$F"

    OdpovědětVymazat
  2. wget očekává cestu v běžném formátu, nic interpretovat nebude, stejně jako ostatní programy, o interpretaci(expandování) speciálních zkratek shellu se stará zas pouze shell. Pokud napíšeš ~ do uvozovek, Bash nic expandovat nebude a wget nedostane platnou cestu. Naopak proměnné Bash expanduje i ve dvojitých uvozovkách. Můžeš porovnat:
    echo ~
    echo "~"
    echo $HOME
    echo "$HOME"
    echo '$HOME'

    OdpovědětVymazat

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.