parsovanie na webe
parsovanie na webe
Ahojte,
potrebujem spraviť web, na ktorom budem (okrem iného) parsovať iné zdroje. Jedná sa o spracovanie veľkého množstva údajov, ideálne by bolo robiť parsovanie, možno aj následné spracovanie paralelne. Problém je, že neviem akú technológiu použiť. Klasické PHP asi nebude stačiť, tak buď nejaký framework, alebo niečo úplne iné (rozmýšľal som nad GWT a parser tým pádom písať v jave) Vedeli by ste mi poradiť do akej technológie ísť? S tým že potom na tom celom vybudujem stránku.
potrebujem spraviť web, na ktorom budem (okrem iného) parsovať iné zdroje. Jedná sa o spracovanie veľkého množstva údajov, ideálne by bolo robiť parsovanie, možno aj následné spracovanie paralelne. Problém je, že neviem akú technológiu použiť. Klasické PHP asi nebude stačiť, tak buď nejaký framework, alebo niečo úplne iné (rozmýšľal som nad GWT a parser tým pádom písať v jave) Vedeli by ste mi poradiť do akej technológie ísť? S tým že potom na tom celom vybudujem stránku.
Re: parsovanie na webe
Som trochu stratený v tom čo vlastne chceš spraviť. Píšeš tu o PHP teda o strane servera a potom o GWT z čoho bude aplikácia ,ktorá pobeží v prehliadači a jej back-end môže byť ako v Jave tak aj v PHP... Kde to chceš parsovať?
Re: parsovanie na webe
No veď o to ide, že neviem kde bude vhodnejšie to parsovať. Či u klienta alebo na serveri. Funkčne to je v podstate jedno
Re: parsovanie na webe
No ja neviem ako to chceš ty riešiť. Ako tam tie dáta dostaneš, koľko tých dát je a koniec koncov o aké parsovanie ide. Ak by šlo o prípad ,že tam tie dáta nahodí klient a nejde o zdĺhavú akciu tak by som to riešil určite na strane klienta (Ušetríš tým aj peniaze za server v prípade väčšieho počtu požiadaviek/návštevnosti).
Re: parsovanie na webe
tak uvediem príklad, snáď to bude jasnejšie
dajme tomu že chcem spraviť predpoveď počasia - tým že budem parsovať napr. 10 webstránok s počasím. Teda na každej stránke vyparsujem údaje pre každú lokalitu a potom ich spracujem, zpriemerujem a budem mať výsledok.
Z toho mi plynie, že je jedno kde budem parsovať, výsledky zobrazím všetky aj keď to spracujem u klienta aj keď na serveri. Ide o to, čo je efektívnejšie a kde je možné lepšie využiť paralelizmus (nech sa jednotlivé stránky parsujú paralelne aby to bolo rýchlejšie)
Z toho mi plynie, že je jedno kde budem parsovať, výsledky zobrazím všetky aj keď to spracujem u klienta aj keď na serveri. Ide o to, čo je efektívnejšie a kde je možné lepšie využiť paralelizmus (nech sa jednotlivé stránky parsujú paralelne aby to bolo rýchlejšie)
Re: parsovanie na webe
Ak toto "spracovanie" chceš robiť pravidelne (napr pár krát denne) a nie pri každom zobrazení stránky, tak je v podstate jedno, v čom to bude. Kľudne v php nejaký cli skript s parametrom a môžeš využiť plánovač operačného systému.
Ak to ale má byť fakt náročné, tak by som to ja osobne napísal v jave(alebo niečom podobnom) a použil priamo paralelizmus v programe.
Ak to ale má byť fakt náročné, tak by som to ja osobne napísal v jave(alebo niečom podobnom) a použil priamo paralelizmus v programe.
Re: parsovanie na webe
má to byť opakované často, po každom načítaní stránky, aj nejaký auto refresh keby bol by bolo ideálne
Re: parsovanie na webe
No a teraz riešime teda problém "ako čo najrýchlejšie stiahnuť", alebo "ako čo najrýchlejšie parsovať veľké dáta" (aj keď nevieme, aké sú to "veľké dáta")?
V php-ku by to prvé mohlo uľahčiť curl_multi_init (lebo s odpoveďou servra veľa neurobíš, nech je to v akomkoľvek jazyku. Možno tak skúsiť sockety, ale to iba ak by toto nestíhalo) a v php-ku to potom aj vyparsovať a zobraziť (alebo to možno trocha prinútiť cez exec). To by museli byť veľmi mega extra veľké dáta, aby toto trvalo neúnosne dlho. Iba ak sa jedná o také dáta, tak by malo zmysel to optimalizovať hlbšie, ale neviem si predstaviť, že by si chcel pri každom zobrazení stránky stiahnuť a spracovať ozaj obrovské dáta. Či?
Dosť ťažko sa radí, keď nevieme, čo je to "veľa údajov" a koľko zdrojov máš na mysli. Konkretizuj toto, nech sa to urobí na mieru, nie zbytočne zložito.
V php-ku by to prvé mohlo uľahčiť curl_multi_init (lebo s odpoveďou servra veľa neurobíš, nech je to v akomkoľvek jazyku. Možno tak skúsiť sockety, ale to iba ak by toto nestíhalo) a v php-ku to potom aj vyparsovať a zobraziť (alebo to možno trocha prinútiť cez exec). To by museli byť veľmi mega extra veľké dáta, aby toto trvalo neúnosne dlho. Iba ak sa jedná o také dáta, tak by malo zmysel to optimalizovať hlbšie, ale neviem si predstaviť, že by si chcel pri každom zobrazení stránky stiahnuť a spracovať ozaj obrovské dáta. Či?
Dosť ťažko sa radí, keď nevieme, čo je to "veľa údajov" a koľko zdrojov máš na mysli. Konkretizuj toto, nech sa to urobí na mieru, nie zbytočne zložito.
Re: parsovanie na webe
Nestačí ti to stahovať raz za nejaký časový interval? Povedzme 10 alebo 5 minút, popr. každú minútu. Ušetríš tým klienta od čakania. (Samozrejme že klient by mal autorefresh)
-
Michaelo
Hardcore addict
- Príspevky: 6177
- Registrovaný: 16 júl 2008, 20:29
- Bydlisko: Pri PC
- Kontaktovať používateľa:
Re: parsovanie na webe
Neviem či každý klient uvidí rovnaké dáta (ale asi áno), ak áno, predstav si, že ti naraz refreshne web 100+ klientov. Ty teda parsuješ tie isté dáta 100x a viac v jednú chvíľu.
Radšej ich parsni raz za 5 minút a ukladaj niekde.
Radšej ich parsni raz za 5 minút a ukladaj niekde.
Re: parsovanie na webe
Ako už je spomenuté vyššie tadiaľ cesta nevedie a to ani keby to parsovanie bolo asynchrónne. Problém je ten ,že ty tie dáta získavaš z iných zdrojov (Aspoň keď ten tvoj príklad nieje úplne odveci) čo znamená ,že ak sa vyskytne nejaký timeout tak tvoj klient bude musieť čakať... nehovoriac o tom ,že 100 požiadavok na tvoj server = 100 požiadavok na každý z tých desiatich webov.
Re: parsovanie na webe
každý klient vidí dáta na základe svojho filtra, ale hej, to som si neuvedomil že by bolo príliš chcieť to stále po každom requeste. Musím teda parsovať v nejakých intervaloch a ukladať výsledky, ktoré potom už iba na základe requestu vyfiltrujem. Jedná sa o kvantum cca 1000 údajov z jednej stránky, pričom stránok by malo byť okolo 10 (neskôr možno viac).
V týchto technológiách nemám absolútne prehľad, teda ako by sa to dalo riešiť? ako na serveri spravím nejakú takú službu ktorá bude v intervaloch spracovávať údaje a potom - ako tie údaje ukladať aby som ich potom vedel pre klientov vyfiltrovať a zobraziť?
V týchto technológiách nemám absolútne prehľad, teda ako by sa to dalo riešiť? ako na serveri spravím nejakú takú službu ktorá bude v intervaloch spracovávať údaje a potom - ako tie údaje ukladať aby som ich potom vedel pre klientov vyfiltrovať a zobraziť?
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: parsovanie na webe
10 000 udajov nie je vela 
Podla mna to kludne zvladne PHP pomocou XPath (PHP to vie robit aj nad html).
A pouzit cron, ziadna veda.
Podla mna to kludne zvladne PHP pomocou XPath (PHP to vie robit aj nad html).
A pouzit cron, ziadna veda.
Re: parsovanie na webe
Tiež v tom nevidím vedu, php skript, cron a prípadne ukladať to do databáze a potom ťahať cez query, prispôsobené podľa filtra.
Re: parsovanie na webe
10 000 údajov nie je vela? keď na jeden request viem stiahnuť tak 2 - 5?
Na to ukladanie - databáza je na takéto vhodná? nie je lepšie použiť niečo iné?
Na to ukladanie - databáza je na takéto vhodná? nie je lepšie použiť niečo iné?
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: parsovanie na webe
Pre databazu to nic nie je.cicik napísal:10 000 údajov nie je vela? keď na jeden request viem stiahnuť tak 2 - 5?
Na to ukladanie - databáza je na takéto vhodná? nie je lepšie použiť niečo iné?
V tvojom pripade by som sa poobzeral, ci tie stranky neposkytuju na to API.
//autoeditácia príspevku (28 Máj 2014, 16:22)
Inac ide to s teba ako z chlpatej deky, to sa tazko radi.
Re: parsovanie na webe
Nie je to veľa na spracovanie v hocičom - takže kľudne php.
Z toho čo píšeš mi príde, že sťahovanie bude pomalé, nech je to napísané v čomkoľvek, lebo bude hlavne záležať na odozve servra. Takže je to asi jedno(?)
A ja osobne by som databázu určite použil. (okrem iného)Nemusíš sa tak starať o synchronizáciu (vyradíš prípady, keď niekto otvorí stránku presne v čase, keď sa budú údaje spracovávať a ukladať)
Treba len vyriešiť súvislosti medzi dátami. Ak píšeš, že bude veľa requestov, bude každý request znamenať zápis hotových dát do db? Predpokladám, že asi nie. Takže použiješ nejakú "medzistanicu" pre dáta, napr obyčajný súbor. Requesty tak môžeš ošéfovať paralelne(stačí multitasking), výsledky uložiť do súboru(ov) a potom to spracovať a odoslať do db.
Z toho čo píšeš mi príde, že sťahovanie bude pomalé, nech je to napísané v čomkoľvek, lebo bude hlavne záležať na odozve servra. Takže je to asi jedno(?)
A ja osobne by som databázu určite použil. (okrem iného)Nemusíš sa tak starať o synchronizáciu (vyradíš prípady, keď niekto otvorí stránku presne v čase, keď sa budú údaje spracovávať a ukladať)
Treba len vyriešiť súvislosti medzi dátami. Ak píšeš, že bude veľa requestov, bude každý request znamenať zápis hotových dát do db? Predpokladám, že asi nie. Takže použiješ nejakú "medzistanicu" pre dáta, napr obyčajný súbor. Requesty tak môžeš ošéfovať paralelne(stačí multitasking), výsledky uložiť do súboru(ov) a potom to spracovať a odoslať do db.
Re: parsovanie na webe
Čo to sú za údaje ,že na jeden request ich stiahneš len 2-5? To znamená ,že nebudeš parsovať 10 stránok ,ale pár stoviek ,ak nie tisíc (1 request - 1 stránka). Ak začneš niekomu zaťažovať takto stránky nebodaj ich dávať dole tak to nepotrvá dlho a prístup z tvojej IPčky bude zablokovaný.cicik napísal:10 000 údajov nie je vela? keď na jeden request viem stiahnuť tak 2 - 5?
Na to ukladanie - databáza je na takéto vhodná? nie je lepšie použiť niečo iné?