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 05:11 | Nová verze

    OCCT3D (Open CASCADE Technology) Open Source 8.0 bylo vydáno. OCCT3D (Wikipedie, GitHub) je objektově orientovaná knihovna pro 3D CAD, CAM nebo CAE. Používá se například v softwarech FreeCAD a KiCad.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Bezpečnostní upozornění

    Ve FreeBSD byla nalezena a již opravena 21letá zranitelnost CVE-2026-42511 v dhclient. Jedná se o vzdálené spuštění kódu (RCE). Útočník mající pod správou DHCP server může získat plnou kontrolu nad systémem FreeBSD pouze jeho připojením k místní síti.

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.

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

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.3. Současně oznámila, že nadcházející větší vydání 24.04-2.0 bude mít modernější webový prohlížeč.

    Ladislav Hagara | Komentářů: 0
    8.5. 17:11 | Zajímavý projekt

    Ploopy po DIY trackballech či sluchátkách představuje nový externí DIY trackpoint se čtyřmi tlačítky Bean. Obsahuje snímač Texas Instruments TMAG5273, spínače Omron D2LS-21 a řadič RP2040, používá firmware QMK. Schémata jsou na GitHubu; sadu lze předobjednat za 69 kanadských dolarů (bez dopravy a DPH).

    |🇵🇸 | Komentářů: 0
    8.5. 03:33 | Zajímavý článek

    Mozilla před dvěma týdny na svém blogu oznámila, že díky Claude Mythos Preview bylo ve Firefoxu nalezeno a opraveno 271 bezpečnostních chyb. Včera vyšel na Mozilla Hacks článek s podrobnějšími informacemi. Z 271 bezpečnostních chyb mělo 180 chyb vysokou závažnost, 80 chyb střední závažnost a 11 chyb nízkou závažnost. Celkově bylo v dubnu ve Firefoxu opraveno 423 bezpečnostních chyb. Čísla CVE nemusí být přiřazována jednotlivým chybám. CVE-2026-6784 například představuje 154 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    7.5. 22:55 | Bezpečnostní upozornění

    Před týdnem zranitelnost Copy Fail. Dnes zranitelnost Dirty Frag. Běžný uživatel může na Linuxu získat práva roota (lokální eskalaci práv). Na většině linuxových distribucí vydaných od roku 2017. Aktuálně bez oficiální záplaty a CVE čísla [oss-security mailing list].

    Ladislav Hagara | Komentářů: 9
    7.5. 14:00 | Humor

    Ačkoli je papež Lev XIV. hlavou katolické církve a stojí v čele více než miliardy věřících po celém světě, také on někdy řeší všední potíže. A kdo v životě neměl problémy se zákaznickou linkou? Krátce poté, co nastoupil do úřadu, musel papež se svou bankou řešit změnu údajů. Operátorka ale nechtěla uvěřit, s kým mluví, a Svatému otci zavěsila.

    Ladislav Hagara | Komentářů: 11
    7.5. 05:11 | Nová verze

    Incus, komunitní fork nástroje pro správu kontejnerů LXD, byl vydán ve verzi 7.0 LTS (YouTube). Stejně tak související LXC a LXCFS.

    Ladislav Hagara | Komentářů: 0
    7.5. 05:00 | Nová verze

    Google Chrome 148 byl prohlášen za stabilní. Nejnovější stabilní verze 148.0.7778.96 přináší řadu novinek z hlediska uživatelů i vývojářů. Vypíchnout lze Prompt API (demo) pro přímý přístup k AI v zařízení. Podrobný přehled v poznámkách k vydání. Opraveno bylo 127 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (13%)
     (9%)
     (2%)
     (14%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (25%)
    Celkem 1564 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 1048×
    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.