Skok na navigaci | Skok na články

Pavlův zápisník

Tento zápisník vyjadřuje mé soukromé názory. Své názory na mé názory zanechávejte v komentářích. Obvykle na ně však nebude brán zřetel :-)

Novinky

29.9.2004
Kategorie: LinuxPocitaceIT

wget - stahujme kvalitně - Podrobný návod s příklady

wget je jedna z nejužitečnějších utilit, kterou lze v GNU utilitách nalézt. Jejím určením je jednoduché stahování souborů, stránek i celých mirrorů z internetu. Pro svou oblibu byl portován na spoustu operačních systémů - tedy i na windows (nativní win32).

Seznámení

wget je konzolová aplikace a jako taková se i používá - jednoduše, s pár příkazy, získáváme obrovskou sílu při stahování. Samozřejmě existují grafické klikací nástavby, ale konzole je konzole :-)

Jako takový má wget asi 100 příkazů ;-) což je docela problém, ale lze vybrat z nich ty nejpoužívanější a nejpraktičtější. O to se posnažím i já zde.

Základní použití

wget http://www.example.org
Nejzákladnější použití - stáhne se index.html (popř. ten soubor, který se vrací na /)
wget ftp://ftp.linux.cz/pub/ROADMAP.html
Stáhne soubor ROADMAP.html pomocí protokolu ftp.

Příkazy jednoduché

wget -i soubor
Pokud máte spoustu odkazů, které chcete stáhnout, je jednodušší si je uložit do souboru a tímto příkazem říct, že se má stahovat to, co je napsáno v tomto souboru.
wget -c ftp://ftp.linux.cz/pub/ROADMAP.html
Příkaz -c říká wgetu, že má navázat stahování souboru po přerušení. Soubor se tedy nestahuje celý znovu, ale stahování se napojí na již existující část.
wget --http-user=jmeno --http-password=heslo http://www.example.org/
Příkazy --http-user a --http-password zasílají jméno a heslo pro přihlášení přes http-autentifikaci.
wget --referer=http://www.example.org/ http://www.example.org/image.gif
Příkaz --referer umožňuje poslat v hlavičce položku refereru, tedy adresu stránky, ze které se dostal prohlížeč na požadovanou stránku. Je to výhodné, pokud server sleduje referery pro blokování hot-linkingu.
wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040911 Firefox/0.10" http://www.example.org
Parametr --user-agent (zkráceně -U) je samovysvětlující - posílá určeného user-agenta serveru, výhodné pro stahování např. celého webu, někdy se user-agent testuje (a Wget/1.9 jasně říká, že jde o stahovač :-)
wget --limit-rate=hodnota http://www.example.org
Velmi užitečná volba --limit-rate nastavuje maximální hodnotu rychlosti, jakou se bude stahovat. Vhodné pro zpomalení stahování na přetížených komunitních sítích, ale i pro dial-upisty. Hodnoty jsou v bajtech za sekundu, pokud chceme limitovat na kilobajty, stačí použít volbu např. takto --limit-rate=30k, čímž se nastaví limit na 30kb/s. Je dost možné, že váš wget tuto volbu mít nebude, můj z Fedora Core ve verzi GNU Wget 1.9+cvs-stable (Red Hat modified) jí má.

Příkazy komplexnější

wget -r -l 1 -k http://www.example.org/
Nastavení rekurzivního stahování (-r) s maximální hloubkou stahování (-l 1, kde 1 znamená, že se stáhne vše do 1. úrovně ze stránky, kdyby byla úroveň nastavena na 2, stáhne se vše, co je v první úrovni plus to, na co první úroveň odkazuje) s převodem odkazů pro lokální prohlížení (-k).
wget -r -l 2 -nd http://www.example.org/
Nastavení rekurzivního stahování (-r) s maximální hloubkou stahování (-l 2), ale bez tvorby adresářové struktury (-nd), všechny soubory jsou tedy uloženy do aktuálního adresáře. Možná je vhodná chvíle říct ještě několik příkazů pro práci s adresářovou strukturou a pro rekurzivní stahování:
-nH
nevytvoří se adresář se jménem serveru (zde tedy adresář www.example.org/ v aktuálním adesáři
--cut-dirs=číslo
Odřízne adresářovou strukturu. Předchozí příkaz zruší adresář se jménem serveru, tento příkaz z leva odřezává názvy adresářů, pokud použijeme např. wget -r -l 2 -nH --cut-dirs=2 http://www.example.org/dir1/dir2/dir3, pak se vytvoří pouze adresář dir3/.
-P adresář
Nastaví adresář, do kterého se budou stažené soubory ukládat. Defaultně je to "." - aktuální adresář.
-k (--convert-links)
Slouží pro převod odkazů v souborech, aby odkazovaly na lokální soubory, a byly vhodné pro off-line prohlížení.
-L
Stahuje pouze relativní odkazy.
-np
Stahuje pouze soubory, které jsou v adresářové struktuře na serveru hlouběji než specifikovaná adresa.
wget -r -l 2 -nc http://www.example.org/
Volba -nc (--no-clobber) má výhodné použití, pokud se přerušilo stahování např. celé web stránky. Bez tohoto parametru wget stahuje všechny soubory znovu, pokud nalezne již existující soubor, vytvoří nový s příponou o jednu větší, než je existující soubor (soubor, který již je stažen, má pořadové číslo 0, které se nezobrazuje, podruhé stažen má příponu .1, pak .2 atd.). S tímto příkazem se wget chová tak, že již stažené soubory ignoruje (pozor - nemusí být kompletní, ale přesto je ignoruje!).
wget -p http://www.example.org/
Volba -p říká wgetu, že má stáhnout stránku (v tomto případě to je index.html z http://www.example.org) a to se všemi soubory, které jsou nezbytné pro zobrazení stránky - obrázky, CSS soubory. Lze samozřejmě kombinovat i s rekurzivním stahováním.
wget -m http://www.example.org/
Příkaz -m slouží pro mirrorování celých webů. Tímto příkazem se nastaví tyto volby: -r -N -l inf -nr, tedy rekurzivní stahování (-r), nastavení timestampů souboru, aby souhlasil s tím na serveru (-N), nekonečnou hloubku stahování (-l inf).
wget -A pdf -r -l 1 http://www.magtypo.cz
A zde bych rád ukázal velmi užitečný příkaz -A a -R. Příkaz -A pripona1,pripona2,... říká, že se mají stáhnout pouze soubory s určenou příponou. V našem příkladu chceme stáhnout časopisy Typo v PDF formátu, které tam jsou volně ke stažení. Vždy je však stažen soubor index.html (nebo ten, na který ukazujete), aby bylo možné zjistit, které soubory se mají stahovat. Opačným příkazem je -R pripona1,pripona2,..., který naopak říká, že soubory s touto příponou se stahovat nemají.
wget -w 10 --random-wait -m http://www.example.org/
Při stahování třeba celého mirroru se může hodit nastavit náhodné časy přístupů na server, protože některé to mohou testovat a přístup zakázat. Příkazem -w čekání se nastavuje čas v sekundách a --random-wait říká, že čas mezi přístupy bude z intervalu 0 až 2*čekání.

Závěrem

Doufám, že tento návod pomůže ke kvalitnějšímu a radostnějšímu přesunu obsahu Internetu na vaše stagigabajtové disky :-)

Vycházel jsem ze svých zkušeností z používání wgetu, dále také z manuálu, manuálové stránky programu a také wget --help. Rozhodně doporučuji podrobnější prozkoumání manuálu, protože jsem např. víceméně vynechal práci s FTP.

Snad tento návod potěší nejen Johnnyho :-).

 
 

Komentáře ke článku

29.9.2004 22:11
Titulek: Moc pekne, dekuji
WWW:
Az doma bude FC3, tak to jiste vyzkousim, takovyto pekny navod se ceni, diky moc.
Odpovědět

30.9.2004 11:11
Titulek: Soubor
Autor: Michal
Hezky pěkně:-) Mám dotaz. Píšeš že pomocí wget -i soubor se dá stáhnout to co je v tom souboru. Představuju si to tak, že si do nějakého txt souboru uložím seznam stránek. A te ta otázka. Jakou má mít ten soubor strukturu? adresa na radek? A asi by to meli byt cely URL, nebo stačí názvy souborů? Ale to by se muselo nějak určit to základní URl. Nebyl by příklad?:-)
Odpovědět

30.9.2004 11:52
Titulek: Soubor
Soubor obvykle obsahuje na každém řádku jedno URL. Je možné mít v souboru zapsané pouze názvy souborů a přes parametr --base=url určit, jaká bude základní adresa a wget pak bude moci obsahovat relativní odkazy. Takže třeba soubor typo bude obsahovat:

TYPO_2003_02.pdf
TYPO_2003_03.pdf
TYPO_2003_04.pdf
TYPO_2003_05.pdf

A příkazem wget -i typo --base=http://www.magtypo.cz/download/ se stáhnou tyto soubory.
Nebo lze příkazem --force-html vynutit změnit na HTML a pak se stahují URL v klasickém HTML formátu (tedy <a href="http://www.example.org/">example</a>). V kombinaci s --base=url se řeší problém pro odkazy v relativním formátu.
Odpovědět

24.11.2004 13:20
Titulek: Soubor
Autor: x3
WWW:
Super, ten navod mi moc helpnul, kouknul jsem jeste do dokumentace wgetu a nasel tam PRESNE to co jsem potreboval... jen tak dal, takovyhle jednoduchy uvodni navody jsou hodne potreba...

X3
Odpovědět

24.11.2004 14:25
Titulek: Soubor
:-)

Mám v plánu ještě udělat "pokročilejší" návod, ale ještě jsem se k tomu nedostal.

Díky za pochvalu :-)
Odpovědět

02.12.2004 17:08
Titulek:
Autor: HáRoš
WWW:
Zdravím, jsem linuxem nedotknutej ale řeším stahovacího robota jaksi "multiplatformově". A z toho mi vyplynul dotaz. Je možno z ext. souboru číst nejen URL ale všechny parametry? Pokud ne, prosím alespoň o nástin řešení, jak na to, pošlu to ve správnou chvíli příslušnému řešiteli :-)
díky za odpověď
Odpovědět

07.2.2005 09:41
Titulek: Aby se Wget tvářil jako IE
Autor: JirkaE
WWW:
Dotaz: Potřeboval bych aby se Wget tvářil jako IE. Předpokládám že to je parametr -U ale nevím co tam mám doplnit za řetězec. Když stahuju údaje z WWW tak mi stejný řetězec v IE generuje správný obsah, ale pokud ho pošlu z Wget tak mi vrátí jinou HTML stránku s chybou.
Odpovědět

08.2.2005 20:42
Titulek: Aby se Wget tvářil jako IE
Ano, je to parametr -U (popř. --user-agent=). Za něj se dává identifikační řetězec prohlížeče. Firefox ho má v informacích o sobě, takže u mě by to bylo...
-U "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8a6) Gecko/20041221 Firefox/1.0+"
popř. v dlouhé verzi
--user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8a6) Gecko/20041221 Firefox/1.0+"
Jak se zjistí identifikační řetězec IE nevím, ale lze jej zjistit na této jednoduché stránce http://www.cetoraz.info/pavel/ua.php.
Odpovědět

26.3.2005 10:42
Titulek: odkazy javascriptem
Autor: Dan
WWW:
Ahoj,
pochopil jsem to tak, že po spuštění si program hledá výchozí soubor (index..., default...) a ten pak prochází a kouká na další odkazy, obrázky, *.cs, *.js soubory..., co v něm jsou a podle toho stáhne další stránky co jsou potřeba. Alespoň si myslím že mi to tak nějak stahuje.
Mám ale stránky kde jsou odkazy řešeny takto:
onClick="window.location.href='./zavody.html'"
Dá se nějak určit že chci stáhnout všechny soubory a podadresáře co jsou na té dané URL?
Díky moc za radu...
Dan
Odpovědět

21.5.2005 14:42
Titulek: Poznámka
Autor: Fil
WWW:
Nějak mi v návodu chybělo přihlašování pro ftp.
Takže tady je:
ftp://user:password@host/path
Odpovědět

22.5.2005 17:58
Titulek: Poznámka
A pro přihlašování přes HTTP autentifikaci to jsou parametry --http-user=uziv_jmeno a --http-passwd=heslo.
Odpovědět

21.7.2005 14:27
Titulek: Bad file descriptor
Autor: Robert
WWW:
Mam problem se stazenim souboru. Nevim jestli je problem na webu nebo s aplikaci. Muzete mi poradit?

U:\>C:\Temp\wget.exe http://wdb.cnb.cz/CNB_TXT/KURZY.K_CURRTXT
--14:09:27-- http://wdb.cnb.cz/CNB_TXT/KURZY.K_CURRTXT
=> `KURZY.K_CURRTXT'
Resolving wdb.cnb.cz... done.
Connecting to wdb.cnb.cz[193.179.126.142]:80... failed: Bad file descriptor.
Retrying.

Diky
Odpovědět

22.7.2005 09:45
Titulek: Bad file descriptor
Autor: Robert
WWW:
Problem je s proxy nebo firewallem. Budu zkouset. Diky
Odpovědět

20.1.2006 23:06
Titulek:
Autor: angel333
WWW:
zkousel sem z tyhle ( http://www.greenday.ic.cz/ai.htm ) stranky stahnout vsechny rary ale nejde mi to - zkusil sem tohle > wget -A rar -r -l 1 http://www.greenday.ic.cz/ai.htm a napise to tohle:

--23:03:32-- http://www.greenday.ic.cz/ai.htm
=> `www.greenday.ic.cz/ai.htm'
Resolving www.greenday.ic.cz... done.
Connecting to www.greenday.ic.cz[217.11.237.36]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

[ ] 7,787 14.32K/s

23:03:33 (14.32 KB/s) - `www.greenday.ic.cz/ai.htm' saved [7787]

Removing www.greenday.ic.cz/ai.htm since it should be rejected.

FINISHED --23:03:33--
Downloaded: 7,787 bytes in 1 files

neni to naka specialita windowsackyho wgetu, nebo neco delam blbe? zkousel sem to i bez toho filtru na pripony ale bezuspesne :(
Odpovědět

24.11.2006 20:09
Titulek: Nefunguje mi wget na obrázky z webové kamery
Autor: SokoBanner
WWW:
Zkouším všemožně nastavit parametry pro wget, aby se mi podařilo stahnout obrázek z http://217.117.222.58/jpg/image.jpg. Ale ať dělám, co dělám, furt nic. Hlásí mi to jenom "Navazuje se spojení s...". Nevíte někdo co s tím?
Odpovědět

27.11.2006 00:34
Titulek: Nefunguje mi wget na obrázky z webové kamery
Tak to bohužel nevím, mě se to stahuje v pohodě a bez problémů. Není problém s proxy serverem?
wget http://217.117.222.58/jpg/image.jpg
--17:33:04-- http://217.117.222.58/jpg/image.jpg
=> `image.jpg'
Connecting to 217.117.222.58:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31,512 (31K) [image/jpeg]

100%[=====================================================>] 31,512 17.34K/s

17:33:06 (17.27 KB/s) - `image.jpg' saved [31512/31512]
Odpovědět

29.10.2007 20:55
Titulek: proxy
Autor: jsk
WWW:
Dobrý den, asi jsem úplnej trotl, ale jak se dostanu přes vlastní proxy nějak mi to nejde. Díky moc předem.
jsk
Odpovědět

30.10.2007 09:40
Titulek: proxy
Buď nastavit environment proměnné http_proxy (viz. wget manuál - sekce Proxies) nebo napsat obdobné řádky do .wgetrc.
Jak je to s wgetem na windows netuším, nezkoušel jsem.
Odpovědět

28.1.2008 13:09
Titulek: proxy
Autor: pt
WWW:
Ty jo dík, to jsem přesně hledal, díkec za návod i za diskuzi
Odpovědět


@

  • O Pavlovi
  • MTB Maratony
  • Výběr článků
  • APC-AA
  • RSS 2.0 Feed
  • RSS 2.0 Feed
  • RSS 0.91 Feed
  • GeoUrl


  • Google
  • Refreshing...

Používám

  • KDE Desktop
  • KDE USER
  • amaroK
  • digiKam
  • k3b
  • KILE
  • KATE
  • Quanta
Pavlův zápisník

Výběr článků

Nenalezena žádná zpráva

Poslední diskuse

Sousedé

Bedlivě sleduji

Čtu

Poslouchám

@ Cetoraz.info


Powered by
APC Action Apps
via econnect

Skok nahoru
 
Webmaster, vlastník a autor pavel@cetoraz.info, © 2002-2007
Hostováno na serveru chl.cz
Layout vychází z Pixyho návrhu třísloupcového layoutu- ,[CNW:Counter][TOPlist]Toplist
iAudit