Hlavní navigace

Hledáme nefunkční odkazy

Michal Krause

Nedávno jsem zde psal o HTML validátoru weblint. Pokud jej hojně využíváte, produkujete již dozajista čistý HTML kód. Sem tam se ale nevyhneme další nepříjemnosti, kterou jsou nefunkční odkazy. Stačí se třeba překlepnout nebo přejmenovat nějaký dokument a neštěstí je na světě. Avšak i na toto existuje lék. Jmenuje se Linbot.

Linbot

je program, jehož primárním účelem je pátrat po nefunkčních odkazech. To dělá dobře a ještě k tomu zvládne pár dalších drobnosti.
Ale pěkně popořádku. Linbot vznikl jako volně šiřitelná protiváha programu Linkbot pro Windows. Je napsaný v Pythonu, takže může běhat všude tam, kde existuje Python interpretr.

Jeho výhodou je, že dokáže rekurzivně kontrolovat dokumenty přímo přes HTTP a tak není problém ani s dynamickými stránkami. Můžete pomocí regulárních výrazů specifikovat URL, která se nemají kontrolovat (případně jejichž potomci se nemají kontrolovat). Zajímavá je možnost limitovat kontrolu pouze „směrem dolů“. Pokud pak například kontrolujete URL http://www.ne­co.nekde/adre­sar/soubor.html, Linbot při procházení strukturou nepůjde nikdy na úroveň http://www.ne­co.nekde/, i když tam povede odkaz.
Šikovnou vlastností je možnost definovat prodlevu mezi kontrolami jednotlivých dokumentů, čímž lze zabránit zbytečnému zatěžování serveru.

Linbot je celkem rychlý, kontrolu Roota, který obsahuje přibližně 250 dokumentů a celkem více než 700 odkazů na jiné servery, provedl za necelých pět minut. Pro větší sajty doporučuji zakázat kontrolu různých kódování češtiny, zbytečně to prodlouží kontrolu, zvětší výsledky a k ničemu to nebude, neboť co funguje v jednom kódování, bude fungovat i v ostatních (tedy pokud není chyba v překódování). Druhá věc, na kterou je třeba dát si pozor je vypnutí kontroly externích odkazů. Linbot totiž defaultně kontroluje i odkazy vedoucí na jiné servery, což by třeba u Roota znamenalo, že by projel těch všech 700 stránek z celého světa, na něž se odkazujeme.

Jak jsem již napsal, Linbot dělá i něco navíc, než jenom kontrolu linků. Dokáže totiž vygenerovat mapu serveru a náhledový seznam všech obrázků (pozor, ten bývá pěkně veliký). Vytvoří seznam stránek, které jsou podle něj příliš staré, seznam stránek nedávno měněných a seznam stránek, které jsou příliš veliké (včetně časů natažení na modemu, ISDN a T1 lince). Najde stránky bez titulku (TITLE), vytvoří soupis odkazů vedoucích mimo server a jako lahůdku na závěr pak i souhrnný výpis všech chyb.

Bohužel, musím rovněž konstatovat, že Linbot má i nějaké chybky. Asi nejviditelnější je to, že občas špatně parsuje HTML kód, takže se pak dozvíte, že neexistuje URL http://www.sez­nam.czFONT></B> a podobně. Naštěstí jde spíše o kosmetickou vadu. Poněkud zvláštní chování jsem pozoroval při závěrečném generování reportů. Když totiž nejel server, kde je domovská stránka Linbotu, generování reportů vytuhlo a následně pak program skončil s hláškou socket error. Bohužel se nevyznám v Pythonu natolik, abych nalezl, proč se se serverem vůbec pokouší kontaktovat.

Celkově vzato je Linbot velice šikovná pomůcka, kterou ocení každý, kdo má na starosti střední nebo větší webovský projekt. Pokud o jeho používání uvažujete, můžete si prohlédnout i vzorové <a href=„http:
st­arship.python­.net/crew/mar­duk/linbot/“>re­porty.

Našli jste v článku chybu?