Portál AbcLinuxu, 23. května 2024 13:26


Dotaz: Python a XML

17.8.2012 09:47 George O.
Python a XML
Přečteno: 618×
Odpovědět | Admin
Zdravim, potrebuju parsovat html obsah a tak jsem se koukal, ktere knihovny python nabizi, nasel jsem xml.parsers.expat a xml.dom.minidom. Bohuzel, ani jedna nefunguje a momentalne nechapu proc. Data, ktera parsuji jsou v kodovani utf-8 a presne takove kodovani nastavuji i parseru, avsak vzdy to selze na nejakem beznem znaku, napriklad:
<img src="imageResize.php?src=_public/upload/images/2011-03/34502249_villa.jpg&w=522&h=619&crop=1" alt="The Villas" />
                        <img src="imageResize.php?src=_public/upload/images/2011-03/p1-2.jpg&w=522&h=619&crop=1" alt="The Villas 2" />
                        <img src="imageResize.php?src=_public/upload/images/2011-03/p1.jpg&w=522&h=619&crop=1" alt="The Villas" />
zde to pada na 2. radku a pise to chybu u 92., 94. anebo 105. znaku... Chyba presne zni: "noZdravim, potrebuju parsovat html obsah a tak jsem se koukal, ktere knihovny python nabizi, nasel jsem xml.parsers.expat a xml.dom.minidom. Bohuzel, ani jedna nefunguje a momentalne nechapu proc. Data, ktera parsuji jsou v kodovani utf-8 a presne takove kodovani nastavuji i parseru, avsak vzdy to selze na nejakem beznem znaku, napriklad:
<img src="imageResize.php?src=_public/upload/images/2011-03/34502249_villa.jpg&w=522&h=619&crop=1" alt="The Villas" />
                        <img src="imageResize.php?src=_public/upload/images/2011-03/p1-2.jpg&w=522&h=619&crop=1" alt="The Villas 2" />
                        <img src="imageResize.php?src=_public/upload/images/2011-03/p1.jpg&w=522&h=619&crop=1" alt="The Villas" />
zde to pada na 2. radku a pise to chybu u 92., 94. anebo 105. znaku... Chyba presne zni: "not well-formed (invalid token): line 106, column 94", coz mi nedava smysl, protoze tam zadny non-ascii znak neni...

Mate s tim nekdo zkusenosti? Diky :-)t well-formed (invalid token): line 106, column 94", coz mi nedava smysl, protoze tam zadny non-ascii znak neni...

Mate s tim nekdo zkusenosti? Diky :-)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.8.2012 09:51 George O.
Rozbalit Rozbalit vše Re: Python a XML
Odpovědět | | Sbalit | Link | Blokovat | Admin
Koukam, ze zde to vkladani dotazu je nejake rozbite, inu tady je PRESNA KOPIE meho dotazu, kterou si vzdycky ukladam pred odeslanim requestu do pameti:

http://pastebin.com/2DMp7Eht
17.8.2012 10:01 l4m4
Rozbalit Rozbalit vše Re: Python a XML
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ampersandy v atributech musí být zapsány pomocí entit, pokud to má být parsovatelné coby XML.
17.8.2012 10:09 George O.
Rozbalit Rozbalit vše Re: Python a XML
Aha, takze i presto, ze treba ten parser neukazuje primo chyby u tech "&", tak je to jimi? To uz, hadam, je vykonnejsi napsat si svuj vlastni parser, kdyz bych musel zvalidovat to cele xml pred vlastnim parsovanim...
17.8.2012 10:25 l4m4
Rozbalit Rozbalit vše Re: Python a XML
Nevím, zda jsou ampersandy jediný problém, ale praštily do očí.

Můžeš použít třeba tidy...

Ale obecně, ano: nedává smysl parsovat něco, co není X[HT]ML, coby XML. Stejně dobře můžeš zkoušet parsovat JPEG jako CSV...
17.8.2012 10:29 kuka
Rozbalit Rozbalit vše Re: Python a XML
Tak s chuti do toho, napsat parser bude jiste snazsi nez osetrit par specialnich znaku. Ale jak uz nekdo psal - jestlize to neni XML, tak mozna XML parser nebude nejlepsi napad...
17.8.2012 10:50 George O.
Rozbalit Rozbalit vše Re: Python a XML
Problem vyresen - ja blbec jsem se spatne koukal a az ted jsem nasel primo HTMLParser, mlatim se hlavou do stolu, dekuji za vas cas :-)
17.8.2012 20:07 intense
Rozbalit Rozbalit vše Re: Python a XML
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak je možné tak odporúčam používať validné XML + lxml. V prípade že sa nedá validnosť xml kódu zaručiť (asi tento prípad) tak odporúčam použiť knižnicu Beautiful Soup, ktorá v celku dobre handluje chyby počas parsovania.
17.8.2012 20:31 chrono
Rozbalit Rozbalit vše Re: Python a XML
lxml obsahuje aj html5parser, takže aj lxml by si s tým malo poradiť.
17.8.2012 20:56 intense
Rozbalit Rozbalit vše Re: Python a XML
ono ani tak nejde o parsovanie html5 ale o štruktúru kódu, lxml ale nehandluje moc dobre nevalidný kód, teda pri parsovaní zlyhá, preto skôr soup, ktorý si väčšinou dokáže poradiť s nevalidným kódom
17.8.2012 20:57 intense
Rozbalit Rozbalit vše Re: Python a XML
ne html5... (preklep) html/xml celkovo som myslel
17.8.2012 21:45 chrono
Rozbalit Rozbalit vše Re: Python a XML
Práve html5 štandard by sa mal postarať, okrem iného, o to, aby nevalidný kód všetky aplikácie spracovávali rovnako. Takže ak ten kód dokážu spracovať prehliadače, mali by fungovať aj knižnice na parsovanie html5 (zvyčajne používam práve html5 parser z lxml, ale pre python sú aj iné).
18.8.2012 15:46 l4m4
Rozbalit Rozbalit vše Re: Python a XML
Práve html5 štandard by sa mal postarať, okrem iného, o to, aby nevalidný kód všetky aplikácie spracovávali rovnako.
Další ukázka toho, že lidi okolo HTML5 nechápou smysl slov jako standard, validní, specifikace, vyhovující, ...

V tomto případě fakticky rozšiřují definici platných (validních) HTML dokumentů tak, že zahrnuje i dnes nevalidní -- ať už tomu říkají jakkoli.
18.8.2012 19:12 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Python a XML
To, že se specifikuje chování v chybových stavech ještě neznamená, že se tyto stavy považují správné.
18.8.2012 19:58 l4m4
Rozbalit Rozbalit vše Re: Python a XML
Je specifikováno, že takový chybový stav bude indikován jako chybový (o odmítnutí ani nemluvím)? Liší se nějak zacházení s takovým dokumentem od zacházení se ,správným`? Neliší-li, tak se tyto stavy považují za správné, jen se to ve ,standardu` nesmyslně pojmenovává.

Lze vůbec z pohledu toho jejich ,living standard` v principu odlišit chybový stav? Třeba je ten dokument podle standardu, jak vypadal před týdnem, nebo jak bude vypadat až za týden...
18.8.2012 20:29 intense
Rozbalit Rozbalit vše Re: Python a XML
Asi som so svojím príspevkom rozpútal vášnivú diskusiu ale nemôžeme ísť späť k pôvodnému problému? Myslím že ideme off topic. Ako som už písal, tak z vlastnej skúsenosti odporúčam skúsiť ten Beautiful Soup na rozparsovanie, ktorý (v mojom prípade) zvláda rozparsovať väčšinou aj html kde lxml a xml zlyhávajú.
18.8.2012 21:10 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Python a XML
Je specifikováno, že takový chybový stav bude indikován jako chybový (o odmítnutí ani nemluvím)?
Při výskytu chyby se musí parser řídit pravidly pro zotavení nebo musí ukončit zpracování vstupu.
Neliší-li, tak se tyto stavy považují za správné, jen se to ve ,standardu` nesmyslně pojmenovává.
Nevím, co si představujete pod pojmem "lišit se".

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.