[python] Pomoc s pythonním RE

rajcze rajcze na gmail.com
Neděle Leden 13 10:31:40 CET 2013


Jojo, ja s tim samozrejme souhlasim, a diky zes to rozepsal do detailu (ja
uz na to v noci po navratu z piva nemel moral :)
I proto jsem se ptal, co konkretne chce Bystroushaak delat, jak moc si muze
zarucit, ze vi jak bude vypadat vstup, atp. Tedy jestli ma vubec smysl se
zabyvat cimkoli jinym bez DOM parserem + xpath (pravda, ze z didaktickeho
hlediska by bylo lepsi to neresit, a presvedcit ho ze je blbost to regexpem
resit.

Na lxml se kouknu, diky za tip.

Joza

2013/1/13 Petr Messner <petr.messner na gmail.com>

> Dne 12. ledna 2013 23:51 rajcze <rajcze na gmail.com> napsal(a):
>
>> OT: ja sice chapu, ze na XML/HTML je potreba pouzivat zasobnikovy
>> automat, ale IMHO existuje trivialni subset uloh, na ktery staci i
>> regexpy... Samozrejme je potreba vedet co chci, a jaky to ma pripadne
>> limity, ale nutne bych netvrdil, ze dostat subset dat z validniho XML/HTML
>> umi jen nas vsemocny oblibenec :D
>>
>>
> Jenže nestačí triviální úloha, ale je nutné i trivální HTML. A ani validní
> HTML neznamená triviální...
>
> Myslím si, že regulární výrazy by se na parsování čekoholiv z XML/HTML
> neměly používat skoro nikdy. Sepsal jsem pár důvodů:
>
> 1. </script> nemusí znamenat konec Javascriptu. Může to být obsah řetězce
> v Javascriptu, kdy je celý kód uzavřen v <![CDATA[ ... ]]> a proto HTML
> tagy v něm nemusí být dále ošetřeny. Vzhledem k tomu, že občas je v
> Javascriptu třeba dynamicky načíst další Javascriptové soubory přidáním
> nových <script> elementů HTML, není nemožné, aby se toto objevilo i v
> normální stránce.
>
> 2. V HTML kódu je pár věcí, které jsou před předáním Javascriptovému
> enginu odstraněny/zpracovány, např. již zmíněné CDATA nebo HTML entity.
> Použitím HTML parseru se tohoto jednoduše zbavíte - zpracuje to za vás.
>
> 3. Podle mé zkušenosti to u jednoduchých úloh nekončí, člověk pak bude
> chtít vyparsovat z HTML i něco trochu složitějšího, a pokud se stále bude
> snažit použít regulární výrazy, nedopadne to dobře. Proč tedy nezačít
> používat HTML parser rovnou?
>
> 4. Regulární výraz (popř. soustava regulárních výrazů), obzvláště po
> zavedení korekcí velkých písmen, nadbytečných mezer a výše uvedených věcí,
> přestává být čitelný, kdežto operace nad DOMem získaným z HTML parseru jsou
> celkem snadno čitelné. V mém předchozím e-mailu jsem uvedl příklad s XPath,
> to je podle mě vhodná obdoba regulárních výrazů pro XML/HTML - můžete si
> tam vybírat elementy podle zanoření, podle atributů, podle CSS tříd, můžete
> tam psát i trochu složitější výrazy (je to jazyk sám o sobě)... Ten XPath
> výraz se pak automaticky zkompiluje podobně, jako se kompilují regulární
> výrazy.
>
>
> Na druhou stranu, abych byl spravedlivý :) Velkou výhodou regulárních
> výrazů je, že samy o sobě jsou jednoduché a existuje jen jedna syntaxe a
> jedna rozšířená implementace. Pro zpracování XML a HTML těch nástrojů
> existuje více, liší se svou rychlostí, benevolencí k chybám v HTML,
> kvalitou dokumentace, tím, zda jsou ve standardní knihovně Pythonu a od
> jaké verze... Navíc lze tyto nástroje kombinovat - třeba použít parser
> BeautifulSoup nebo html5lib s výstupem do ElementTree a tím zkombinovat
> robustnost parseru s rychlostí.
>
> BeautifulSoup mohu také doporučit, několikrát jsem ho použil. Před časem
> jsem přešel na lxml, které toho umí hodně a je rychlé - důvodem k přechodu
> bylo to, že se budoucnost BeautifulSoup zdála nejistá, ale teď vypadá OK
> (nová verze, podpora Pythonu 3).
>
> PM
>
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>



-- 
Rules of Optimization:
Rule 1: Don't do it.
Rule 2 (for experts only): Don't do it yet.
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20130113/309503f0/attachment.html>


Další informace o konferenci Python