Diskuze: Robot na stahování webů a ukládání jejich obsahu do DB
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
$str = file_get_content($url);
A pak uz pouzijes str_pos+substr nebo reg. vyrazy preg_match/preg_replace.
Takhle, nevidim duvod, proc se s tim drbat v php, kdyz jsou hotove exe soubory
A chceš hledat pouze v určitém seznamu stránek, nebo se snažíš udělat crawler (indexuje vše, na co narazí)?
Robot bude indexovat to co mám v DB když najde novou stránku tak ji
zapíše do DB robotovy který bude stejný ale bude se zabývat jen nalezenýmy
odkazy.
On to dělá, aby se lépe naučil s PHP Samozřejmě nejlepší takovou věc
by bylo napsat to v rychlém céčku, aby to mělo smysl, ale to by mu
nepomohlo...
Ono celkově by se ti hodilo, kdyby sis za pomocí regexu nebo prácí s DOMem nalezl všechny odkazy na stránce a uložil -> ty pak taky procházel a pořád dokola, získáš díky tomu docela dost stránek (záleží na tom, jak dlouho to necháš běžet).
To by ani nutné nebylo, spíše poskládat z více součástí. Weby se dají celkem dobře stahovat utilitou wget (řeší i odkazy v nich, má slušně široké možnosti natavení) a zbytek (ukládání dat DB) třeba menším skriptem v Pythonu. Pokud je cílem napsat si něco jako vlastní wget, tak rozhodně směle do toho, úloha to není zrovna jednoduchá, pokud má řešit všechny možné případy.
Jako úloha pro procvičení PHP mi to přijde dost nevhodné vzhledem k primárnímu použití tohoto jazyka, tedy na tvorbu webů. Jistě, najdou se i protipříklady (např. malware rodiny Zeus), ale podle mě to není rozumná cesta.
Co jsem pochopil z tvého zadání, chceš prográmek, který poběží na pozadí (třeba na serveru), občas se podívá, zda nedostal za úkol stáhnout nějaký web, pokud ano, začne jej stahovat a provádět další věci dle tvých přání.
V tomtto případě mi přijde Python lepší.
Jak se dá v pythonu stáhnout web?
Porad se ptas na to same
Nevim, zda si rozumime. Web stahujes bud html stranku nebo komplet vsechno,
kazdy soubor, ktery pro zobrazeni stranky potrebujes (css, js, obrazek). A dal
muzes stahovat dalsi stranky podle odkazu v html strance. To lze do nekonecna
nebo nastavil level, treba, do hloubky 4 odkazu.
Kam si budes data ukladat, je tvuj problem. Je tam treba hlidat cesty a
neukladat duplicity.
Jako skolni uloha by to melo fungovat asi tak, ze si vytvaris v php strom,
prohledvas strom, zda tam uz takova stranka existuje, abys ji neduplikoval a
pridas ji do seznamu. V podstate vystup by mohl byt jen strom stranek. Pripadne
k nim pridane jmena souboru (obrazky, css, ...)
Pri ukladani souboru bych delal uplne stejnou adresarovou strukturu jako najdes
u odkazu.
Stazeni souboru do stringu je pres file_get_content(). Dalo by se pouzit mozna fopen() nebo nejake funkce f-neco.
To jo, však jsem psal že to je něco pro c, ale klidně i Python. Já to myslel k procvičení jazyka jako takového. Je jedno že ta úloha není čistě webového ražení, pořád se na tom nacvičí OOP, práci s DOMem, funkce na pole atd...
Zobrazeno 13 zpráv z 13.