Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:23.5.2018 18:21

Nevíte jak mám udělat robota na stahování webů a ukládání jejich obsahu do DB? Popis:
Robot by měl stahovat weby které najde v DB.Potom na webu najde title a description. Pokud nenajde description tak vezme text z nadpisů a textu o maximální délce 100 znaků.Potom vybere text a nadpisy o maximální délce 2500 znaků.Vše zapíše do DB a soubor webu smaže. Robota chci udělat v PHP. Nebude problém se stránkamy zakázanýmy souborem robots.txt ?. Děkuji za odpověď. ( Ano snažím se o fulltextové vyhledávání ) :)

Odpovědět
23.5.2018 18:21
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.5.2018 8:38

$str = file_get_conten­t($url);
A pak uz pouzijes str_pos+substr nebo reg. vyrazy preg_match/preg_re­place.

Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět
24.5.2018 8:38
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.5.2018 9:02

Takhle, nevidim duvod, proc se s tim drbat v php, kdyz jsou hotove exe soubory

 
Nahoru Odpovědět
24.5.2018 9:02
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:24.5.2018 10:54

A chceš hledat pouze v určitém seznamu stránek, nebo se snažíš udělat crawler (indexuje vše, na co narazí)?

Nahoru Odpovědět
24.5.2018 10:54
the cake is a lie
Avatar
Odpovídá na Petr Čech
Neaktivní uživatel:24.5.2018 13:58

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. :)

Nahoru Odpovědět
24.5.2018 13:58
Neaktivní uživatelský účet
Avatar
Odpovídá na Peter Mlich
Martin Štěpánek :24.5.2018 21:27

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...

Nahoru Odpovědět
24.5.2018 21:27
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Odpovídá na Neaktivní uživatel
Martin Štěpánek :24.5.2018 21:28

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).

Nahoru Odpovědět
24.5.2018 21:28
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Martin Štěpánek
Martin Dráb:26.5.2018 19:45

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.

Nahoru Odpovědět
26.5.2018 19:45
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Neaktivní uživatel:26.5.2018 19:50

Takže spíše python? :)

Nahoru Odpovědět
26.5.2018 19:50
Neaktivní uživatelský účet
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:26.5.2018 20:00

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ší.

Nahoru Odpovědět
26.5.2018 20:00
2 + 2 = 5 for extremely large values of 2
Avatar
Neaktivní uživatel:26.5.2018 20:04

Jak se dá v pythonu stáhnout web? :)

Nahoru Odpovědět
26.5.2018 20:04
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.5.2018 14:16

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.

  • V php se da html stranka parsovat jako DOM nebo XML nebo pres si to muzes parsovat sam pres pres strpos, substring ci reg. vyrazy preg_match().

Stazeni souboru do stringu je pres file_get_content(). Dalo by se pouzit mozna fopen() nebo nejake funkce f-neco.

  • V pythonu to bude neco podobne. Staci zadat do googlu python py parser.
  • Idealni cesta je jit cestou hotovych programu, jak uz zminili wget. Existuje pro linux i win. Mozna se pro win jmenuje trochu jinak. Tam zadas pravne url webu, hloubku 4. Ze chces kompletne vsechny soubory. Od-enterujes a pak uz jen pockas, az to dostahuje. Wget muzes spoustet i pres php. Dal by se asi pouzit exec() nebo jeho alternativy, viz php.net/exec nadpis See also.
 
Nahoru Odpovědět
28.5.2018 14:16
Avatar
Odpovídá na Martin Dráb
Martin Štěpánek :29.5.2018 11:50

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...

Nahoru Odpovědět
29.5.2018 11:50
Všechno jde naprogramovat, chce to jen čas a chuť...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.