Portál AbcLinuxu, 25. dubna 2024 16:25


Dotaz: Jak uložit data z jiný stránky do databáze

18.3.2011 21:41 beginer666 | skóre: 9
Jak uložit data z jiný stránky do databáze
Přečteno: 518×
Odpovědět | Admin
Ahoj, chtěl jsem se s Váma poradit jak uložit data z jiný stránky do databáze.

Potřeboval bych uložit ty data abych je později přiřadil k hráčům.

Rád bych to načítal z http://eu.leagueoflegends.com/ladders/solo-5x5 ale netuším jak by to šlo. Je tam totiž víc stránek etc. etc. docela pro mě problém, možná ale bude někdo vědět.

Jde mi o to abych stáhnul hlavně nick a raiting ze všech stránek(cca 3500) co tam jsou.

Takže aby byl výledek

např.:
-----------------------------
||Nick || Raiting || Pořadí||
-----------------------------
||sOAZ || 2206    || 2     ||
-----------------------------
etc.
Díky moc za nápady.


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.3.2011 21:45 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Odpovědět | | Sbalit | Link | Blokovat | Admin
Funkční odkaz je Zdrojová stránka
19.3.2011 00:31 smartin | skóre: 1
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Odpovědět | | Sbalit | Link | Blokovat | Admin
Za prve napis v jakem jazyce a databazi :)

Za druhe pouzij regularni vyrazy a mas vyhrano :)
19.3.2011 09:04 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Je uplně jedno v jakym jazyce, prostě to potřebuju dostat do databáze a dál si stim umim poradit.

Regulární výrazy neovládám - chápu že se to dá najít na netu , ale to bych u toho strávil mládí - proto jsem rád že existujou takovýhle poradny kde mě vždycky někde hezky nakopne.

Nepotřebuju hotové řešení jen první kopanec.

Třeba vůbec nechápu jak bych z bashe kontaktoval ten server. Přes telnet? A co dál?

19.3.2011 10:08 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Třeba vůbec nechápu jak bych z bashe kontaktoval ten server. Přes telnet? A co dál?
Co treba curl, nebo wget?
wget -q -O - http://eu.leagueoflegends.com/ladders/solo-5x5
Tim ziskas stranku, a pak uz jen zpacovani:
wget -q -O - http://eu.leagueoflegends.com/ladders/solo-5x5 | grep XXXXX
19.3.2011 12:43 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Díky za tip, už jsem mezitím pracoval s curl. Těd už to stačí jenom vygrepovat, awk, cut etc. holt se u toho budu muset trošku vyvztekat.

Jinak by mě zajímalo co je lepší použít když stim budu načítat cca 11000 stránek. WGET nebo CURL? Myslim co víc zatíží server.

Díky
19.3.2011 10:41 l4m4
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Když to shrnu:

* Je úplně jedno, v jakém jazyce a do jaké databáze.

* Nepotřebuješ úplné řešení, stačí nakopnutí.

Mohou tyto věci platit současně, pokud neovládáš všechny existující databáze a všechny existující programovací jazyky? A je v tom případě takové problém naučit se k nim ještě regulární výrazy?
19.3.2011 15:34 otakar | skóre: 6
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus pohledat, jestli autoři neposkytují soubor se statistikou. Zpracovat jeden soubor je snadné, pokud to budeš tahat po kouskách wgetem, tak ve výsledku (v db) budou zmatky, nepřesnosti atd. + provozovatel servru tě nebude mít rád.
19.3.2011 16:42 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Bohužel neposkytují. Ta statistika je online a načítá se z jejich databáze. Přístup do databáze mi nedají. ):
19.3.2011 18:39 otakar | skóre: 6
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Takhle je to u všech her :-)

Některé herní servry poskytnou jednou za den výpis dat (komprimovaný) a je možné si dělat vlastní statistiky. Zkus se s nimi domluvit. Pokud je cílem historie statistik mohlo by to být výhodné i pro ně.

Tady je ukázka jednoho servru, jak vypadá rozumný přístup příklad

Ta adresa v nápovědě není všem na očích, ale kdo hledá - najde.
19.3.2011 17:07 chrono
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dá sa použiť napr. Scrapy, ale ako už bolo napísané, je tam príliš veľa stránok, takže tie údaje môžu byť nepresné (pretože počas spracovávania sa môžu tie údaje zmeniť) a je veľmi pravdepodobné, že ich server ťa zablokuje skôr, ako to stihneš prejsť aspoň raz.
Řešení 1× (beginer666 (tazatel))
19.3.2011 18:18 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak už jsem to vyřešil, sice to trvá skoro hodinu ale průměrná zátěž na ten server je 200 kbit/s což by nemuseli ani zjistit.

díky za pomoc
19.3.2011 18:33 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Jestli to delas wgetem, tak se podivej do manualu na parametry:
--limit-rate=
--random-wait=
--user-agent=
Nasimuluj si tak treba Firefox a nahodne cekani mezi pozadavky => bude jim to min napadne.
19.3.2011 18:49 otakar | skóre: 6
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
nahodne cekani mezi pozadavky
Tohle zvětší šanci na změnu dat - posun hráčů mezi stránkami => ve vlastní db budou chyby (nezachycený hráč a zdvojený hráč).
19.3.2011 18:44 otakar | skóre: 6
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Nejde pouze o trafic. Každý tvůj požadavek musí zpracovat i databáze a (asi) taky php.
19.3.2011 20:07 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Před chvíli mi to doběhlo - trvalo to přesně 2 hodiny.

| 88488 | 88488    | kanaris                | 2    | 2    | 1200   |
| 88489 | 88489    | BEDbMAK007             | 2    | 2    | 1200   |
| 88490 | 88490    | John Darck             | 2    | 2    | 1200   |
| 88491 | 88491    | 150                    | 2    | 2    | 1200   |
| 88492 | 88492    | Lemine                 | 2    | 2    | 1200   |
| 88493 | 88493    | xFirefighterx          | 2    | 2    | 1200   |


Všecky záznamy se mi načetli maximálně korektně. První sloupek je ID co si vytváří DB a druhé číslo je přímo pořadové šíslo ze stránek. Pro všech 88493 záznamů je to 1:1.

Přemejšlim jak by se to dalo načíst rychleji. Je to celkem 3650 stránek takže kdybych je načetl po po deseti tak mi na to stačí pouze 360 jobů/scriptů. Teď ještě vymyslet jaký způsobem to rozdělit.

Pokud má někdo zkušenosti s masivním dotazování rád se poučím.

Těch 360 jobů zabere 360*200kbit/s takže celkem(72Mbit/s) jsem zvědavej jestli si toho už někdo všimne. ((;
20.3.2011 00:47 YYY | skóre: 29 | blog: martinek
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Nebylo by lepsi se s provozovatelem ferove dohodnout, nez ho takhle bagrovat? :)
20.3.2011 10:48 chrono
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Podobné otázky na ich fóre už boli a vždy boli ignorované.
26.3.2011 22:47 Kit
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Před chvíli mi to doběhlo - trvalo to přesně 2 hodiny.
Zkusil jsem příkaz
curl "http://eu.leagueoflegends.com/ladders/solo-5x5?page=[0-3684]"\
    -o "solo#1.html"
Stahovalo mi to rychlostí cca 1 stránku za sekundu. Tedy za hodinu by to curl měl zvládnout. S paralelizací možná i dříve. Celý výstup se dá snadno přesměrovat do dalšího procesu:
curl -s "http://eu.leagueoflegends.com/ladders/solo-5x5?page=[0-3684]" |\
     zpracovani | ulozeni-do-databaze
Řešení 1× (beginer666 (tazatel))
27.3.2011 15:54 beginer666 | skóre: 9
Rozbalit Rozbalit vše Re: Jak uložit data z jiný stránky do databáze
Už jsem to vyřešil v jinym dotazu. Problém byl hlavně v ukládání do DB s každym výsledkem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.