TIP#337: K čemu se vám může hodit wget? Ke stahování a zrcadlení!

O software jménem wget je řeč už v Jak udělat kopii webu? Kopii pro offline použití, ideálně, ale jde o hodně užitečnou pomůcku (software), takže je čas mu zasvětit samostatný tip. Byť wget pochází hlavně z Linuxového prostředí, nemusíte se ostýchat, i pro Windows ho můžete mít. Opatřit si ho můžete třeba přes www.gnu.org/software/wget kde na stránce s informacemi o stažení najdete i další platformy.

Nezapomeňte, že wget se spouští z příkazové řádky, tedy pokud jste uživatelé Windows a možná netušíte, že něco takového máte. Hodit se vám může pro řadu věcí jednorázových, ale pokud se naučíte „programovat“ nějaké ty dávkové soubory (skripty), tak si pomocí wgetu dokážete zařídit leccos.

2015-12-03 07_38_57-wget --help _ more - Far 3.0.3367 x64.png

Následující příklady jsou jenom zlomek toho, co wget umí. Nápovědu si můžete zobrazit pomocí wget –help a pokud budete chtít, přes Google najdete stovky článků, které ukazují příklady toho, jak wget používat.

Stažení jednoho souboru

Prosté a jednoduché, spustíte wget http://nejakyweb.cz/soubor.ktery.chcete.iso

Můžete případně chtít soubor uložit pod jiným jménem, což zařídíte přidáním parametru –output-document=novejmeno.iso (a ve zkrácené podobě jde o -O)

Do dávkového souboru se vám bude hodit, pokud se stažený soubor uloží do určité složky, to řeší –directory-prefix=složka

Stáhnout pouze pokud soubor na serveru je novější zařídí –timestamping

Pokračování v přerušeném stahování

Jedná z užitečných vlastností, pokud se stahování přerušilo a nedokončilo, tak v řadě případů můžete prostě znovu spustit wget a pomoci –continue mu říci, aby pokračoval. Místo –continue můžete použít i -c

Pokud nepoužijete -c a soubor už existuje, tak wget původní soubor nepřepíše, místo toho vytvoří soubor znovu a k jeho jménu přidá . 1 (.2 atd pokud již nějaká číslovaná verze existuje).

Stažení více adres (více souborů)

S pomocí –input seznamadres.txt můžete předložit textový soubor se seznam adres, které má wget stahovat. Co řádka, to jedna adresa ke stažení. Místo –input můžete použít i kratší -i

Wget v parametrech přijme více adres (souborů) ke stažení i bez nutnosti vytvářet si textový soubor. Bude se vám hodit i to, že můžete libovolně míchat http:// či ftp:// adresy.

Stažení více souborů, které jsou sekvenčně číslované

S pomocí složených závorek a uvedení číselného rozsahu můžete stáhnout soubory, které jsou sekvenčně (postupně) číslované. Třeba jako wget http://nejakyweb.cz/{1..100}.png

DODATE:K POZOR: Ve Windows si tuhle vychytávku neužijete, není to vlastnost wgetu ale shellu (bashe). 

Stažení kompletní stránky z webu, tak aby šla použít offline

Trochu složitější konstrukce, kterou je možná vhodné si uložit jako dávkový soubor a spouštět s parametrem  – wget –page-requisites –span-hosts –convert-links –adjust-extension http://nejakyweb.cz/stranka.html

Stažení kompletního webu nebo částí webu

O stažení kompletního webu už je řeč v Jak udělat kopii webu? Kopii pro offline použití, ideálně, ale možností jak to dělat (a co dělat) je samozřejmě podstatně víc.

Kompletní web, včetně prolinkovaných stránek a souboru: wget –execute robots=off –recursive –no-parent –continue –no-clobber http://nejakyweb.cz/

Všechny JPG obrázky z určité složky: wget –level=1 –recursive –no-parent –accept jpg,JPG,jpeg,JPEG http://example.com/mp3/

Jiný způsob pro kompletní web (aby byl použitelný offline) je wget –mirror -p -convert-links -P kam_uložit http://nejakyweb.cz

Stahování z webů vyžadujících přihlášení či jiná omezení

Pokud potřebujete stahovat z webů vyžadujících přihlášení, je to jednoduché – pro http komunikaci k tomu slouží parametry –http-user=jméno a –http-password=heslo.

Narazíte-li na web vyžadující určitý referer a user-agent, tak to také není problém, stačí použít parametry –refer=refererováadresa  a –user-agent=“potřebný UA“.

2015-12-03 07_40_12-{C__tmp} - Far 3.0.3367 x64.png

Zjištění informací o souboru bez stažení

Pokud chcete zjistit datum poslední změny souboru či jeho délku, tak stačí použití wget –server-response –spider http://nejakyweb.cz/adresa

Kontrola webu na chybějící odkazy (404ky)

Předchozí volba –spider se hodí pro průchod webem a kontrolu odkazů (nenalezené budou zaznamenány), dá se to udělat třeba jako wget –output-file=logsoubor.txt –recursive –spider http://nejakyweb.cz (-output-file je možné nahradit -o).

Omezit rychlost stahování (a být ohleduplný k stahovanému webu)

Pomocí –limit-rate=10k řeknete wget-u aby stahoval maximálně rychlosti 10kbps, což nejenom bude ohleduplné k serveru ze kterého stahujete, ale také můžete tímto způsobem šetřit vlastní linku (a nemusíte si ji tak kompletně zacpat).

Omezit objem celkového stahování

Parametr -Q můžete zajistit ukončení stahování po překročení určitého objemu (například jako -Q100m). Funguje to jenom u rekurzivního stahování nebo při stahování s pomocí -i (dodaného seznamu souborů). K přerušení dojde po překročení stanoveného objemu, ale poslední soubor (ať je velký jak je velký) se vždy stáhne celý).

Spuštění stahování na pozadí (pouze pro Linux)

Pomoci parametru -b můžete stahování odsunout na pozadí (background).

Zvětšit/změnit počet pokusů o stažení v případě neúspěchu

Parametrem –tries=počet můžete nastavit kolikrát bude wget zkoušet stáhnout soubor v případě neúspěchu. Výchozí nastaveni je dvacet.

Když nechcete stahovat určité soubory při stahování webu

S pomocí parametru –reject=seznam_přípon se můžete vyhnout stahování určitých typů souborů.

Stahování z FTP

Wget umí stahovat nejenom z webů, ale i z FTP serverů. Je to velmi jednoduché, prostě použijete ftp://nejakaadresa.cz místo http://. Pokud bude potřeba se přihlašovat, tak umí jméno heslo v URI nebo jako samostatné parametry –ftp-password a –ftp-user.

Další podobné pomůcky tohoto typu? HTTPie  a cURL