HTML PARSER новая волна

antonio

Moderator
Команда форума
HTML PARSER новая волна

Дошли руки до написания аналога моего PHP HTML parserа на С++. Альфа версия готова, правда пока парсер никак не связан с РНР. Свяжу довольно скоро. Очень интересует мнение профи. Качать отсюда
http://anton.concord.ru/htmlparser/htmlparser-c.zip
Собран пока только под винду, но на GNU C++ тоже все собирается без проблем. Пока еще сильно тормозит на чистом тексте, т.е. если текст без тегов, то тормоза, не ругайте за это, скоро разберусь. Сначала читать readme.txt
Грамматика в htmlgrammar.dat пока не полная. Тоже прошу не ругаться сильно.

Очень интересны Ваши пожелания по фильтрации.
 

antonio

Moderator
Команда форума
настраиваемая грамматика+возможность фильтрации, возможность парсинга кривого HTML/XML + возможность сохранения парсеного кода в файл и последующее его использование
 

tony2001

TeaM PHPClub
>настраиваемая грамматика+возможность фильтрации
можешь рассказать про это?
не совсем ясно что из себя представляет фильтрация и грамматика.

>возможность парсинга кривого HTML/XML
незакрытые тэги или совсем кривой типа <td param= bad param value> ?
 

antonio

Moderator
Команда форума
Автор оригинала: tony2001
>настраиваемая грамматика+возможность фильтрации
можешь рассказать про это?
не совсем ясно что из себя представляет фильтрация и грамматика.
В readme.txt описано, что дает грамматика.
Фильтрация возможна только при реконcтрукции HTML кода

возможность парсинга кривого HTML/XML
незакрытые тэги или совсем кривой типа <td param= bad param value> ?
Да, совсем кривой будет распознан, если он подходит под simple grammar (см. readme.txt) За пример трактовки совсем кривого HTML взята трактовка кривого HTML 5-ым эксплорером
 

antonio

Moderator
Команда форума
Дам, но только когда вылизаны будут, проект будет Free, но не open source, либы с апишником будут в свободном доступе

-~{}~ 19.03.04 07:22:

Уничтожил немного багов, обновитесь, кому интересно.

-~{}~ 19.03.04 07:31:

Кстати, имеет ли смысл в данный момент добавить возможность реконструкции дерева в сериализованный массив для РНР такой же структуры как и в php html parser. Жду ответа :), тогда можно будет ансериалайзить его из РНР и юзать по первому времени.
 

antonio

Moderator
Команда форума
Автор оригинала: valyala
Бегло прочел файл readme.txt. Идея, конечно, неплохая. Но почему бы не изобретать велосипед, а взять за основу стандартизированный SGML ( http://www.w3.org/TR/1998/REC-html40-19980424/intro/sgmltut.html ) в качестве системы описания языка разметки?
1. Я не ставлю перед собой цель делать строгий разбор с выяснением правильности значений параметров, опционально можно ввести регекспы и все.

2. описание становится проще.

3. Дело вкуса, как говорится. Хозяин - барин.

4. Лично мне этот парсер нужен для определенного проекта.
Если он окажется удобен кому-нибудь еще, буду только рад.

-~{}~ 25.03.04 12:34:

Поправил вышеописанные баги
10М хтмл парсится 15 секунд, чистый тект практически моментально, кому интересно - обновляйтесь

http://anton.concord.ru/htmlparser/htmlparser-c.zip

-~{}~ 25.03.04 13:56:

еще один мемори лик убит :)

-~{}~ 29.03.04 08:32:

Проект переведен в бету 1.0, код отлажен, может быть ньюансы мелкие остались.

http://anton.concord.ru/htmlparser/htmlparser-c-1.0b.zip

-~{}~ 29.03.04 08:36:

Парсер получился быстрый. 10Мб HTML парсится 15сек на моем Intel Celeron 800Mhz 256Mb RAM Win2k, при использовании грамматики, секунды на две дольше. Тест замерялся для операции парсинг+запись парсеного файла+реконструкция+запись реконструированного файла
 

antonio

Moderator
Команда форума
Исходники без описания выкладывать, или лучше все-таки помучиться и приделать документацию? :)
 

xlex

Guest
Лучше бы с документацией... Хотя бы внутри кода - кто что делает и как лучше пользовать (a-la Unix man).
 

antonio

Moderator
Команда форума
ok, буду работать. Документация тока на англицком устсроит? Просто 50% есть исключительно на англицком.

Парсер протестирован наконец-то в multithreaded среде. Показатели положительные.
 

xlex

Guest
Английский/русский - как удобно.
Под юниксом работать должно или не тестировалось? С удовольствием буду тестером для FreeBSD 5.2 и Darwin 7.3.0 (MacOS X 10.3.3) с посильной помощью в портировании.
 

antonio

Moderator
Команда форума
Исходники выложены, проект переведен в разряд open source,
документация coming soon
 

antonio

Moderator
Команда форума
помощь принята :)

-~{}~ 16.06.04 08:33:

Anight! Я попытался собрать под виндами твой порт, возникли проблемы, стукнись в асю плиз.

-~{}~ 24.06.04 15:05:

Благодаря anight порт был сделан, за что ему огромное спасибо! Сырцы тут:

http://anton.concord.ru/htmlparser/htmlparser-c-1.1b-src.zip

Бинарники для виндов тут:

http://anton.concord.ru/htmlparser/htmlparser-c-1.1b.zip

-~{}~ 24.06.04 15:11:

Приглашаются желающие написать реконструктор в сериализованный массив для PHP. Собственно сабж. С удовольствием приму помощь, поскольку времени у самого маловато, все никак руки не дойдут описать архитектуру, принцип хранения данных и API, не говоря уже о реконструкторе для PHP.
 

xlex

Guest
Кстати, а правильно ли я понимаю, что примерно тоже самое делается libxml2, точнее его html-ным обработчиком?
 

antonio

Moderator
Команда форума
Даже не знаю что и ответить :) никогда не работал с libxml2 :)
Пойду почитаю про нее
 
Сверху