Parsing tabulky

Kit

Re:Parsing tabulky
« Odpověď #15 kdy: 26. 08. 2015, 20:45:30 »
mozes pouzit nejaky prehliadac, napriklad links

links -dump ws-115200.html > ws-115200.txt

spravi to peknu tabulku s fixnou sirkou slpcov, potom uz rozparsujes iba tu tabulku. Do toho html mozes dat uz iba cast kodu obsahujucu iba html tabulku (vyparsujes nariklad cez xmlint)...

To jsem chtěl původně navrhnout také, ale nenašel jsem v manuálu vstup přes STDIN. Dalo by se to však použít jako vstup pro silně ořezaný původní skript. V Sedu nejsem příliš zběhlý, určitě se následující skript dá ještě zkrátit, Jsou to jen dva procesy.

Kód: [Vybrat]
links -dump http://en.tutiempo.net/climate/07-2015/ws-115200.html |
    sed -e '1,/Day T/d' -e '/Medias/,$d' -e 's/^ *//' -e 's/ *$//' -e 's/  */,/g'


Tommy

Re:Parsing tabulky
« Odpověď #16 kdy: 26. 08. 2015, 22:40:00 »
Kit

Jj, je ten program docela dost slozity, o tom zadna. Napsal jsem to tak jak umim (a vyvoj trval hodiny a hodiny). Nejvetsi problem je ve spousteni mnoha procesu na kazdou stranku. To zabrat muze okolo 0.2 s, takze v tvem pripade je zpracovani mnohem rychlejsi.

Co se tyce jineho formatu dat nez html, tak ten k dispozici neni, jinak by se slozity proces vubec resit nemusel. Stanice maji nastesti vsechny stejnou html strukturu, ale obcas (jednou za par let) se zmeni struktura celeho webu a skript je na nic razem. Mival jsem na to lepsi a rchlejsi skript co pouzival awk, ale ten uz nehraje a ja v awk neumim.

Dale zabere download stranky okolo 0.2 s v pripade, ze dany mesic na stanici existuje (pokud ne, je cas pod 100 ms). Jedna html stranka s daty ma radove 50-70 kB. To se da resit tim, pouziji web offline (webreap pomoci wget). To ale take neni zadna sranda - bezelo to 4-5 tydnu (2 tydny konvert odkazu), spotreba RAM 5-15 GiB, vice nez 5 000 000 html souboru a 200 GiB dat. Pri kompresi 7z/LZMA/ULTRA je vysledny archiv cca 1.9 GiB. Neni prakticke mit na disku 5 000 000 malych souboru, tak jesm z toho udelal iso image (velikost okolo 200 GiB, jen 1 soubor, po kompresi cca 2 GiB, ISO soubor se da pripojit na virtualni mechaniku jako virtualni DVD disk).

Zkousel jsem pustit skript na stazene html stranky, misto wget tedy cat SOUBOR a pak ty procesy Parsing. Zahadne to ale bezelo mnohem pomaleji (zpomaleni moc soubory na disku) ? Takze pouzit skript na offline html nebylo ucinne.

Tommy

Re:Parsing tabulky
« Odpověď #17 kdy: 26. 08. 2015, 22:45:48 »

Spotřeba strojového času u mého skriptu je 0.07 sekundy, ale úzkým hrdlem bude spíš komunikace se serverem a I/O režie, která v tom není započtena.


I/O myslis zapis stranky na disk jako soubor ? To mam udelane prave tak ze zapisuje az txt data a stranku posle prez cat do RAM. Komunikace se serverem - pri kazde strance se posila reqest a odpoved (podle vseho ze Spanelska) chvilku trva. Datovy tok neni tak hrozny, do 2 Mbit, 2-3 Mbit v pripade plnych stranek z daty a temer nulovem case pro parsing dat a zapis na disk.

Kit

Re:Parsing tabulky
« Odpověď #18 kdy: 26. 08. 2015, 23:18:03 »
Zatím nejrychlejší řešení, které se mi podařilo napsat:

Kód: [Vybrat]
links -dump ws-115200.html |
    awk 'BEGIN { OFS="," } /Day T/, /Medias/ { if ($1~/[[:digit:]]/) print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11 }'

real   0m0.087s
user   0m0.012s
sys    0m0.012s

Tommy

Re:Parsing tabulky
« Odpověď #19 kdy: 27. 08. 2015, 16:29:28 »
Kit

Diky, parsing vypada ze by touto cestou sel. Ale pokud zadam ten prikaz z tvych poslednich 2 prispevku, tak to hodi nulovy pocet znaku, kdyz zadam jem tak to tu tabulku jakytak vypise.


Kit

Re:Parsing tabulky
« Odpověď #20 kdy: 27. 08. 2015, 16:49:57 »
Kit

Diky, parsing vypada ze by touto cestou sel. Ale pokud zadam ten prikaz z tvych poslednich 2 prispevku, tak to hodi nulovy pocet znaku, kdyz zadam jem tak to tu tabulku jakytak vypise.

Na datech, která jsi mi poskytl, mi to funguje. Pokud do toho sypeš data v jiné struktuře, tak to fungovat nemusí, jenže jsi mi je nedodal. Nemám to tedy na čem testovat - z mého pohledu je ten skript OK. Kdybys aspoň napsal URL vstupních dat, pro které to nefunguje, zařadil bych je do testu.

Tommy

Re:Parsing tabulky
« Odpověď #21 kdy: 27. 08. 2015, 23:28:23 »
Kit

Ona chyba nejspíš stejně bude u mě v tom že mam nějaký program ve starší verzi (už jen Gnuplot 4.2 vs. 4.6+ jak blbnul) nebo mi něco chybí v programech.

Data jsem poskytnul právě v podobě na webu jakožto odkaz, tedy http://en.tutiempo.net/climate/07-2015/ws-115200.html . Měsíc, rok či stanice s můžou měnit, ale html struktura by měla být konstantní (nebo prázdno, když nejsou data http://en.tutiempo.net/climate/07-1915/ws-115200.html )

HTML data pro offline tedz takz existují, http://meteotommy.twilightsparkle.cz/DATA/TUTIEMPO/TUTIEMPO_HTML_DATA.7z
popř. ISO soubor http://meteotommy.twilightsparkle.cz/DATA/TUTIEMPO/Tutiempo_Climate_HTML_Data_IMAGE.7z
ostatní sobory v tomto adresáři jsou hotová TXT resp. CSV data., dennní data pro všechny stanice zatim nedoběhli.


Kdytak mi napiš mail, muj mail je TommyAst zavinac gmail com, muzu ti poslat skript, jak to vypada. Kdyz bz te napadla nejaka ta optimalizace, dal bych to jako zakazku a domluvili mz jsme se za kolik, uz je to slozitejsi ukon.