abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 10:11 | Pozvánky

    Společnost initMAX pořádá bezplatný webinář Zabbix a pokročilý databázový monitoring, zaměřený na efektivní správu a sledování databází pomocí nástroje Zabbix. Účastníci se naučí, jak nastavovat klíčové metriky, sledovat zátěž databázových serverů, analyzovat dotazy a předcházet problémům s výkonem. Webinář nabídne praktické ukázky a osvědčené postupy pro monitoring databází. … více »

    Heřmi | Komentářů: 0
    dnes 03:33 | Komunita Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Zajímavý projekt

    Společnost Ondsel se snažila vylepšovat UX/UI FreeCADu a nabízet jej komerčně. Po dvou letech to ale vzdala. Pierre-Louis Boyer, bývalý zaměstnanec Ondselu, by rád pokračoval. Na YouTube představil soft-fork FreeCADu s názvem AstoCAD.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Nová verze

    Aplikace pro blokování internetové reklamy v celé síti Pi-hole (Wikipedie) byla vydána v nové verzi 6. Přehled novinek a oprav v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 5
    včera 15:55 | IT novinky

    Vývojáři počítačové hry Kingdom Come: Deliverance II (Wikipedie, ProtonDB) oznámili (𝕏), že za 2 týdny se prodalo 2 miliony kopií.

    Ladislav Hagara | Komentářů: 0
    včera 15:11 | Nová verze

    Společnost xAI založena Elonem Muskem na síti 𝕏 představila Grok-3, tj. novou verzi svého AI LLM modelu Grok.

    Ladislav Hagara | Komentářů: 15
    včera 12:33 | Bezpečnostní upozornění

    Byla vydána nová verze 9.9p2 sady aplikací pro SSH komunikaci OpenSSH. Řešeny jsou 2 bezpečnostní chyby: CVE-2025-26465 (MITM pokud je zapnuta volba VerifyHostKeyDNS, ve výchozím stavu je vypnuta) a CVE-2025-26466 (DoS). Detaily na stránkách společnosti Qualys (txt).

    Ladislav Hagara | Komentářů: 0
    včera 02:44 | Zajímavý článek

    Argentinský prezident Javier Milei čelí více než stovce žalob a trestních oznámení kvůli spáchání podvodu, protože na svých sociálních sítích propagoval kryptoměnu $LIBRA, jejíž hodnota se v krátké době znásobila a pak zhroutila.

    Ladislav Hagara | Komentářů: 47
    17.2. 18:55 | Nová verze

    Wayland Protocols byly vydány ve verzi 1.41. S dlouho očekávaným protokolem správy barev a High Dynamic Range (HDR).

    Ladislav Hagara | Komentářů: 1
    17.2. 17:22 | Nová verze

    Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.11.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest (Wikipedie) v říjnu loňského roku přejmenovaný na Luanti.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: parser na HTML tabulku

    3.1.2007 23:12 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    parser na HTML tabulku
    Přečteno: 968×
    Zdravim

    Mame transparentni ucet u eBanky a potrebuju napsat parser a vycucat z toho neco jako CSV:

    datum;variabilni symbol;castka

    http://www.ebanka.cz/Fire...ber=2588438001

    Napadu mam spoustu, ale bohuzel vladnu jen prikazy typu cut, grep, sort apod, ale awk a sed uz jdou ponekud mimo me, muze me nekdo nakopnout?

    Nejprve je asi potreba vyjmout cast mezi <tbody> a </tbody> a pak jednotlive radky bunky preskladat tak aby v plaintextu byly skutecne na jednom radku a pk uz na to muzu postat cut.

    Diky vsem.

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf

    Odpovědi

    4.1.2007 00:24 R
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    A musi to byt v shelli? Na taketo veci pouzivam PHP skripty (daju sa spustat aj z command line) - daju sa pouzivat veci ako strip_tags(), str_replace(), explode()...
    4.1.2007 09:36 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Je to takový nespolehlivý, změní ti trochu zdroják stránky a parser se ti rozpadne. V první řadě bych se zkusil zeptat přímo ebanky jestli nedělají nějaký csv export. Když jsem to dal u nich vyhledat našlo mi to nějaký windowsový program, který to zřejmě umí.

    Pokud trváš na vlastním parseru možná by šlo pomoci si elinksem:

    elinks -dump-charset UTF-8 -dump-width 150 -dump http://www.ebanka.cz/Firemni-finance/Firemni-ucet/Transparentni-ucet/trAccountDetail.jsp?accountNumber=2588438001

    A na to awk doporučuju se mrknout. stojí to za to ;-)
    4.1.2007 15:27 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    CVS export mi drive davala Ceska Sporitelna po te, co jsem se pomoci WWW::Mechanize pomoci SSL, jmena a hesla prihlasil na ucet. To by bylo samouzrejme idelani.

    Zkusim to z nich nejak vydolovat.

    V principu to muze byt v jakemkoliv jazyku, vklidu i v PHP

    Awk a bratricek sed jsou mocne nastroje, ale bohuzel casu na uceni je malo.

    Zkusim ten elinks nebo podobne veci.

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    5.1.2007 15:07 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Takze s eBankou jsme vubec neuspel (cist odspodu):

    S elinksem jsem tez neuspel, muzete me nekdo nakopnout s tim sedem, awkem a dalsimi kamarady?

    -------------------------------------------

    Zdravim

    Dekuji za odpoved, nicmene s nabizenou variantou jsem zcela nespokojen.

    1) Program je pouze pro MS Windows, coz je mi vcelku nanic, to na serveru opravdu nemam, ani nikde jinde.
    2) K programu by jste museli dodavat i otroka aby jsme mohli mluvit o skutecnem automatickem zpracovani.
    3) Dokonce i ceska sporitelna to ma zadarmo, tak proc ne eBanka?

    Holt mi nezbyde nic jineho nez si na webovy vypis z uctu napsat vlastni parser, ktery mi vyplivne CSV data.

    Nicmene i tak vam dekuju za odpoved a doufam ze s dalsimi sluzbami jiz budu spokojen vice. Jelikoz jeden nespokojeny uzivatel s eBankou zrejme nepohne, povazuji tuto vec za uzavrenou.

    Zdenek Stepanek

    ------
    Prejdete na stranu svobody!

    Prejdete na OpenOffice.org - www.openoffice.cz
    Prejdete na Linux - www.linux.cz
    Prejdete na Jabber - www.jabber.cz

    WEB@ebanka.cz wrote:
    > Vazeny pane Stepanku,
    >
    > dovolte nam reagovat na Vas e-mail.
    >
    > Pro potreby ziskani vypisu v podobe pouzitelne pro dalsi elektronicke
    > zpracovani eBanka majitelum Firemnich i Transparentnich uctu nabizi
    > aplikaci nazvanou eKomunikator. Prostrednictvim tohoto programu lze
    > zajistit pohodlnou komunikaci mezi uctem klienta a jeho ucetnim programem.
    > Prostrednictvim eKomunikatoru lze odesilat hromadne prikazy k uhrade/inkasu
    > a stahovat vypisy z uctu ve formatu, ktery je pouzitelny pro dalsi
    > elektronicke zpracovani. Podrobne informace o programu eKomunikator, vcetne
    > podrobne Uzivatelske prirucky, muzete najit pod odkazem
    > http://www.ebanka.cz/Firemni-finance/Prime-bankovnictvi/Propojeni-s-ucetnictvim.html
    >
    > Vypisy lze pres eKomunikator stahovat ve formatu ABO ci Gemini. Prijatou
    > davku s vypisy lze primo v Manualnim zpracovani ulozit jako soubor s daty
    > oddelenymi stredniky (take znam jako CSV format).
    > Instalaci programu eKomunikator lze provest primo na svem uctu. Pri
    > instalaci doporucuji pouzit Uzivatelskou prirucku. Po instalaci je nutne
    > vytvorit SOI (soubor osobnich informaci), Vas soukromy a Verejny klic a
    > zadost o registraci Verejneho klice. S zadosti o registraci ulozenou na
    > diskete je treba navstivit Klientske centrum eBanky. Registraci muzeme
    > realizovat pri nasem setkani.
    > Poplatky souvisejici s vyuzvanim tohoto programu jsou uvedeny v platnem
    > Ceniku eBanky.
    >
    > V pripade dalsich dotazu Vam jsme opet k dispozici.
    >
    > S pranim hezkeho dne
    >
    > Katerina Kubikova
    > Klientsky servis
    > eBanka
    >
    >
    >
    >
    > Zdenek stepanek <zdenek@gavanet.org> on 04.01.2007 17:25:05
    >
    >
    > To: klient@ebanka.cz
    > cc:
    >
    > Subject: strojove zpracovatelny vypis z uctu
    >
    > Zpracováno: |---------|
    > | [X] Ano |
    > |---------|
    > Zpracoval(a): Katerina Kubikova
    > Dobry den,
    >
    > obcanske sdruzeni, jehoz jsem predsedou ma u vas transparentni ucet. Pro
    > nas system potrebuji ziskavat vypis z uctu v nejake strojove
    > zpracovatelne podobe, je mozne vypis stahovat ve formátu CVS nebo
    > jakemkoliv jinem standardnim formatu, ktery bych moh dale automaticky
    > zpracovavat pomoci pocitace?
    >
    > Dekuji za odpoved.
    > --
    >
    > Zdenek Stepanek
    >
    > ------
    > Tato emailova zprava nemuze obsahovat virus protoze nepouzivam Windows.
    >
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    5.1.2007 15:56 Pavel1 | skóre: 33
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    S elinksem jsem tez neuspel, muzete me nekdo nakopnout s tim sedem, awkem a dalsimi kamarady?
    Jak neuspěl? Já toto zkusil :
    elinks -dump-width 150 -dump http://www.ebanka.cz/Firemni-finance/Firemni-ucet/Transparentni-ucet/trAccountDetail.jsp?accountNumber=2588438001        
    
    a obdržel jsem pěkný textový výpis, který už by neměl být problém dále zpracovávat ve skriptu (za pomoci potřebných programů, jako sed, grep, sort, ......) a dovést ho do potřebné struktury.
    5.1.2007 15:34 martyone
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    xmllint?
    5.1.2007 23:41 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Hlasim uspech s PHP. Zde je testovaci kod vznikly metodou pokus-omyl, jeste to chce ucesat.

    <?php
    
    $string = strstr(file_get_contents ('dataget2'), '<tbody>');
    
    $pozice = strpos ($string, '</tbody>');
    
    $string2 = substr ($string, 0, $pozice);
    
    #$string3 = html_entity_decode ($string2);
    
    $dopryc = array(" class=\"odd\"", " class=\"even\"", "\n", " ", "<tbody>", " ", "td", "br");
    
    $string3 = str_replace($dopryc, "", $string2);
    $string4 = str_replace("</tr>", "</tr>\n", $string3);
    $dopryc = array("<", ">", "tr");
    $string5 = str_replace($dopryc, "", $string4);
    $string6 = str_replace("/", ";", $string5);
    $dopryc = array(";;;;;;", ";;;;;", ";;;", ";;");
    $string7 = str_replace($dopryc, ";", $string6);
    
    echo $string7;
    
    ?>

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    Josef Kufner avatar 6.1.2007 00:59 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Nauč se perl, na tohle je šikovnější ;-)
    Hello world ! Segmentation fault (core dumped)
    6.1.2007 09:12 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Diky za radu, perlem bohuzel neperlim, i kdyz taky bych rad, ten jazyk mam rad.

    Pro zvidave: Odstranovat vicenasobny vyskyt stredniku neni dobry napad, jelikoz tim muzou zmizet 2 stredniky ktere mezi sebou maji prazdnou hodnotu a v jinem radku je ta hodnota zadana. Napadlo me to az moc pozde.

    Nicmene ja budu zpracovavat pouze prichozi platby, tak jsem nad tim nejak nepremyslel, ale jako nakopnuti pro dalsi hledace je to snad pouzitelne, takove quick and dirty reseni.

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    6.1.2007 09:17 Tomáš Honzák | skóre: 19 | Praha
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Potvrzuju -- pro perl se dá mj. přímo dohledat modul na parsování HTML tabulek ...

    use HTML::TableExtract;

    a přes něj se pak dá (mj.):
  • dohledat tabulka např. podle atributů
  • a dohledaná tabulka procházet řádek po řádce tak, že obsahy buněk jsou rovnou nacpaná v poli.

    Já to používám v kombinaci s WWW::Mechanize (modul na vyplňování a odesílání formulářů na webu) k "real-time" parsování účtů za VoIP telefonii u jednoho klienta.
  • 6.1.2007 20:53 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše ez
    Mam na to prima vzpominky. WWW::Mechanize se mi prihlasoval do cesky sporitelny a stahoval vypis primo v CSV, sporka ho primo nabizi. Sice to fungovalo pekne, ale je to ukazka toho, jak je sporka "bezpecna". standardny webovy formular skrze https. Stejny zabezpeceni pouzivaj i paranoidnejsi webovy diskuze. Dnesk uz prej maj tu telefoni kontrolu...

    Taky se mi perl koukal na konto u adsl, taky fajn.

    Jinak diky vsem co nize prispeli se svymy kody, nejspis trochu zabrednu do pythonu.

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    Josef Kufner avatar 6.1.2007 23:43 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: ez
    Pokud šlo jen o výpis transakcí, tak bych se toho nebál. Trápilo by mě, kdyby se takle ty transakce i potvrzovaly.
    Hello world ! Segmentation fault (core dumped)
    6.1.2007 09:56 Botanicus2 | skóre: 2 | blog: Vyber_distra
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Perl? Ale fuj, dneska, kdyz mame Ruby?
    6.1.2007 10:01 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Je celkem pohodlné použít html parser z nějaké knihovny. Následující program předpokládá docela málo věcí o formátu html zdrojáku. Není tam ani jediný regulární výraz nebo nahrazování textu. Použitý parser vyhledává přímo html tagy, jejich atributy atd. Program správně vyhledá i prázdné položky v tabulce.

    Získaná data se ukládají do seznamu, kde jsou uloženy trojice datum, variabilní symbol a částka. Výstup vypadá takto:
    Datum: 2007-01-05 04:21:39.0 Variabilni symbol: 28 Castka: 400.00
    Datum: 2007-01-03 05:35:26.0 Variabilni symbol: 5 Castka: 400.00
    Datum: 2007-01-03 05:35:23.0 Variabilni symbol: 33 Castka: 400.00
    Datum: 2007-01-03 05:33:14.0 Variabilni symbol: 51 Castka: 800.00
    Datum: 2007-01-02 09:36:02.0 Variabilni symbol: 16 Castka: 400.00
    Datum: 2007-01-02 05:57:28.0 Variabilni symbol: 49 Castka: 400.00
    Datum: 2007-01-01 23:59:59.0 Variabilni symbol:  Castka: 
    Datum: 2006-12-31 23:59:59.0 Variabilni symbol:  Castka: 0.04
    Datum: 2006-12-28 06:40:52.0 Variabilni symbol: 8 Castka: 400.00
    Datum: 2006-12-28 05:48:15.0 Variabilni symbol: 48 Castka: 400.00
    Datum: 2006-12-20 17:57:35.0 Variabilni symbol:  Castka: 1000.00
    
    Navíc je použita primitivní cache, která stáhne zdrojový kód z netu jen tehdy, pokud ho nenajde již dříve uložený na disk (což se hodí při ladění).
    #!/usr/bin/env python
    import urllib2
    from HTMLParser import HTMLParser
    
    class MyHTMLParser(HTMLParser):
    
        def parse(self, html):
            self.tdcounter = 0
            self.within_tbody = False
            self.thead_found = False
            self.platby = []
            self.platba_parsed = []
            self.feed(html)
            self.close()
    
        def handle_starttag(self, tag, attrs):
            if tag == 'td': self.tdcounter += 1
            if tag == 'tbody' and self.thead_found:
                self.within_tbody = True
    
        def handle_data(self, data):
            if 'VARIABIL' in data: self.thead_found = True
            if self.within_tbody:
                if self.tdcounter in (4,13,17):
                    self.platba_parsed.append(data.strip())
    
        def handle_startendtag(self, tag, attrs):
            if self.within_tbody and tag == 'br':
                self.tdcounter += 1
    
        def handle_endtag(self, tag):
            if tag == 'tr':
                self.tdcounter = 0
                if self.platba_parsed:
                    self.platby.append(self.platba_parsed)
                self.platba_parsed = []
            if tag == 'tbody': self.within_tbody = False
    
    url = 'http://www.ebanka.cz/Firemni-finance/Firemni-ucet/Transparentni-ucet/trAccountDetail.jsp?accountNumber=2588438001'
    htmlcache = 'ebanka_cache'
    try:
        contents = file(htmlcache).read()
    except:
        handler = urllib2.urlopen(url)
        contents = handler.read()
        handler.close()
        file(htmlcache, 'w').write(contents)
            
    parser = MyHTMLParser()
    parser.parse(contents)
    for datum, varsymb, castka in parser.platby:
        print 'Datum: %s Variabilni symbol: %s Castka: %s'%(
                datum, varsymb, castka)
    
    6.1.2007 15:22 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: parser na HTML tabulku
    Celkom zaujímavé je FireFox rozšírenie Greasemonkey. Tu je príklad skriptu (treba ho "trocha" vybrúsiť):
    // ==UserScript==
    // @name          eBanka
    // @description   eBanka
    // @include       http://www.ebanka.cz/Firemni-finance/Firemni-ucet/Transparentni-ucet/trAccountDetail.jsp*
    // ==/UserScript==
    
    
    function lTrim(value) {
    	var r = /\s*((\S+\s*)*)/;
    	return value.replace(r, "$1");
    }
    
    function rTrim(value) {
    	var r = /((\s*\S+)*)\s*/;
    	return value.replace(r, "$1");
    }
    
    function trim(value) {
    	return lTrim(rTrim(value));
    }
    
    window.addEventListener(
        'load',
        function() {
    var table, tbody, rows, columns, items, txt;
    
    txt = "";
    line = new Array(16);
    
    table = document.getElementsByTagName('table')[0];
    if (!table) {
    	alert('Nemôžem nájsť <table>');
    	return;
    }
    tbody = table.getElementsByTagName('tbody')[0];
    if (!tbody) {
    	alert('Nemôžem nájsť <tbody>');
    	return;
    }
    rows = tbody.getElementsByTagName('tr');
    for (var i = 0; i < rows.length; i++) {
    	row = rows[i];
    
    	columns = row.getElementsByTagName('td');
    	if (columns.length != 7) {
    		alert('Zlý počet stĺpcov:' + columns.length);
    		return;
    	}
    
    	items = columns[0].textContent.split('\n');
    	line[0] = items[1]; // poradove cislo
    
    	items = columns[1].textContent.split('\n');
    	line[1] = items[1];	// datum
    	line[2] = items[2];	// cas
    
    	items = columns[2].textContent.split('\n');
    	line[3] = items[1];	// poznamka
    	line[4] = items[2];	// nazov uctu
    	line[5] = items[3];	// cislo uctu
    
    	items = columns[3].textContent.split('\n');
    	line[6] = items[1];	// datum odpisania
    	line[7] = items[2];	// valuta
    	line[8] = items[3];	// typ
    
    	items = columns[4].textContent.split('\n');
    	line[9] = items[1];	// variabilny symbol
    	line[10] = items[2];	// konstantny symbol
    	line[11] = items[3];	// specificky symbol
    
    	items = columns[5].textContent.split('\n');
    	line[12] = items[2];	// ciastka
    
    	items = columns[6].textContent.split('\n');
    	line[13] = items[1];	// poplatok
    	line[14] = items[2];	// zmena
    	line[15] = items[3]; // spr8va
    
    	for (var k = 0; k < line.length; k++) {
    		line[k] = trim(line[k]);
    	}
    	txt += line.join(";") + "<br>\n";
    }
    
    document.open()
    document.writeln(txt + "<br>");
    document.close();
        },
    true);
    

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.