<div class="gmail_quote">2009/12/24 Dmitry E. Oboukhov <span dir="ltr">&lt;<a href="mailto:unera@debian.org">unera@debian.org</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

A&gt; Есть SAX-подобные парсеры типа HTML::TokeParser.<br>
<br>
ага, попарсь ими например какой-нибудь mailru (где постоянно грешат<br>
незакрытыми тегами) что-то вроде<br>
<br>
&lt;tr&gt;<br>
    &lt;td&gt;jdjdkjk<br>
    &lt;td&gt;mlkllk<br>
&lt;tfoot&gt;<br>
    &lt;tr&gt;<br>
        &lt;td&gt;...&lt;/td&gt;<br>
    &lt;/tr&gt;<br>
&lt;/tfoot&gt;<br>
<br>
и получится что когда хотим что-то конкретное выколупывать из сайтов<br>
то парсеры &quot;ломаются&quot; в каком-то конкретном случае и начинают вместо<br>
тега выколупывать еще и соседние.<br>
<br>
да, понятно что это невалидный html, но такого пол интернета :(<br></blockquote><div><br></div><div>Рамблер-почта парсит HTML-письма со всего мира с помощью HTML::Parser (он как раз событийный). Невалидность, которая встречается в письмах, настолько невалидна, что дух захватывает :) Ничего, справляется. Восстановление порядка в таблицах конечно писали сами, но, повторяю, событийные парсеры позволяют делать с семантикой всё что угодно.</div>

</div>