URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 91232
[ Назад ]

Исходное сообщение
"Компания Google открыла код Gumbo, библиотеки для парсинга HTML"

Отправлено opennews , 14-Авг-13 14:01 
Компания Google представила (http://google-opensource.blogspot.ru/2013/08/gumbo-c-library...) новую открытую библиотеку Gumbo (https://github.com/google/gumbo-parser), предоставляющую набор функций для  разбора HTML, построенных на  реализации алгоритма парсинга, описанного (http://www.whatwg.org/specs/web-apps/current-work/multipage/...) в стандарте HTML5.  Код опубликован под лицензией Apache 2.0.

В отличие от прошлых спецификаций HTML, стандарт HTML5 определяет единый алгоритм разбора HTML, позволяющий унифицировать работу парсера в различных браузерах. Проблема заключается в том, что существующие реализации алгоритма HTML5 либо привязаны к конкретным реализациям браузеров или движков рендеринга, что затрудняет их обособленное использование, либо написаны на скриптовых языках, что не позволяет добиться приемлемой производительности. Реализованный в Gumbo парсер проходит все тесты html5lib-0.95 (https://github.com/html5lib/html5lib-tests)) и готов для использования в качестве отдельного продукта.


Библиотека написана на языке Си и не требует для своей работы внешних зависимостей, что делает её интересным решением для использования в качестве основы для построения различных инструментов для проверки корректности, рафакторинга и анализа HTML, создания шаблонизаторов и других программ, манипулирующих разметкой HTML. Предоставляемый Gumbo API предельно прост и может использоваться для создания обёрток для различных языков программирования. Библиотека позиционируется как стабильная - код уже используется в промышленной эксплуатации для работы с поисковыми индексами Google.


Особенностью Gumbo также является изначально поддерживаемые средства отслеживания местонахождения узлов в дереве парсинга и их сопоставление с позицией в оригинальном тексте. Из планов на будущее отмечается реализация функций для разбора отдельных фрагментов, предоставление полноценных средств генерации отчётов о выявленных ошибках в разметке, создание биндингов для различных языков программирования.

URL: http://google-opensource.blogspot.ru/2013/08/gumbo-c-library...
Новость: https://www.opennet.ru/opennews/art.shtml?num=37658


Содержание

Сообщения в этом обсуждении
"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено meequz , 14-Авг-13 15:21 
Забавно, что выложілі на гітхаб, а не на свой гуглокод.

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено Аноним , 14-Авг-13 16:10 
Они давно туда выкладывают свой код

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено Аноним , 22-Авг-13 03:07 
Очевидно же - гуглокод нафиг никому не сдался, ибо чтобы там запостить банальный баг нужно подписывать гугловскую EULA, никто в здравом уме этого делать не будет.

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено chinarulezzz , 14-Авг-13 16:14 
гугл не отбирает у своих разработчиков возможность использовать те инструменты, которые им удобны.

linux//windows/macosx/etc, vim/emacs/eclipse/netbeans/etc. Что угодно.


"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено CAP , 15-Авг-13 22:58 
от windows они отказались вроде официальная инфа была

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено Маша Слонина , 14-Авг-13 18:33 
Вот за что я люблю google для python сразу есть обертка.

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено kurokaze , 14-Авг-13 23:42 
> Вот за что я люблю google для python сразу есть обертка.

Хвалю, вот бы и все остальные владельцы собак так поступали


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 14-Авг-13 21:38 
чёрт, действительно на чистом си! надо присмотреться. а то libsgml ночами ссытся в постель, хоть и старается изо всех сил чтобы «как у взрослых».

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено u , 14-Авг-13 22:22 
Лицензия, как всегда.

"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено Kibab , 16-Авг-13 18:21 
А что с ней не так?

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 22:34 
> А что с ней не так?

GPL лучше была бы. но дареной библиотеке в лицензии не заглядывают.


"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено Aleksey Salow , 14-Авг-13 23:27 
я так понимаю с невалидным html будет тяжко.

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 14-Авг-13 23:44 
> я так понимаю с невалидным html будет тяжко.

ты бы правила разбора html5 почитал, что ли… «пониматель».


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 15-Авг-13 10:09 
посоны, аккуратно, там ошибка! ну, то есть, в библиотеке. нефатальная, но при некоторых условиях можете получить бредовые имена атрибутов.

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено Аноним , 15-Авг-13 11:12 
Ссылку на репорт можно?

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 15-Авг-13 11:33 
> Ссылку на репорт можно?

нет. у меня нет и не будет аккаунта на гитхабе, а нормального багтрекера, куда пускают анонимусов, люди не дают.

хинт: два атрибута с одинаковым именем и значением, идущие подряд друг за другом, дают забавный результат в attribute->name.


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 15-Авг-13 11:36 
> хинт: два атрибута с одинаковым именем и значением, идущие подряд друг за
> другом, дают забавный результат в attribute->name.

в смысле: attr="value" attr="value" another_attr="another_value"
будет маленькая забавка.


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено Kibab , 16-Авг-13 18:22 
Это ты об анонимности так печёшься или просто нечего класть? :-)

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 22:36 
> Это ты об анонимности так печёшься или просто нечего класть? :-)

алё, дурилка, ты тесткейз и патч видел? прямо в этой теме. уж наверное можно проверить.


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено Kibab , 17-Авг-13 02:25 
>> Это ты об анонимности так печёшься или просто нечего класть? :-)
> алё, дурилка, ты тесткейз и патч видел? прямо в этой теме. уж
> наверное можно проверить.

Да не переживай ты так :-)) Вон, видишь, даже забыл, на какой вопрос отвечаешь.


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 17-Авг-13 02:34 
Rasch abkochen, dann Vormarsch nach Sokal.

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 15-Авг-13 23:43 
багфикс, котаны:

diff --git a/src/tokenizer.c b/src/tokenizer.c
index c5547bd..ec19d8b 100644
--- a/src/tokenizer.c
+++ b/src/tokenizer.c
@@ -815,6 +815,7 @@ static void finish_attribute_value(GumboParser* parser) {
     // Duplicate attribute name detected in an earlier state, so we have to
     // ignore the value.
     tag_state->_drop_next_attr_value = false;
+    reinitialize_tag_buffer(parser);
     return;
   }



"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено Аскар Сафин , 06-Авг-14 15:01 
Пофиксили
https://github.com/google/gumbo-parser/commit/3068711413b52c...

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 06-Авг-14 16:39 
> Пофиксили

угу. молодцы, хорошо работают. а могли бы ещё лучше.


"Компания Google открыла код Gumbo, библиотеки для парсинга H..."
Отправлено ssd3 , 16-Авг-13 22:46 
пару дней назад решил попробовать эту либу в проекте mosync, сборка и использование без всяких вопросов за счет c99, чистенько :)

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 22:49 
грязненько, потому что целых два варнинга.

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено ssd3 , 16-Авг-13 22:55 
а если точнее, то у меня 3 warnings было

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 22:59 
> а если точнее, то у меня 3 warnings было

а третий-то откуда? один — из-за отсутствия return после switch'а (хотя туда и не дойдёт никогда). второй — из-за забытой переменной node. а третий?


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено ssd3 , 16-Авг-13 23:02 
>> а если точнее, то у меня 3 warnings было
> а третий-то откуда? один — из-за отсутствия return после switch'а (хотя туда
> и не дойдёт никогда). второй — из-за забытой переменной node. а
> третий?

parser.c:3049: warning: array subscript has type `char'
parser.c:1550: warning: control reaches end of non-void function
tag.c:205: warning: array subscript has type `char'


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 23:04 
это что у тебя за компилятор такой, милчеловек, который неиспользованое значение переменной провтыкал, а на совершенно нормальный код ругается не по делу, как пьяный извозчик? O_O

интересно просто.

p.s. нечто gcc древний какой?


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено ssd3 , 16-Авг-13 23:17 
> это что у тебя за компилятор такой, милчеловек, который неиспользованое значение переменной
> провтыкал, а на совершенно нормальный код ругается не по делу, как
> пьяный извозчик? O_O
> интересно просто.
> p.s. нечто gcc древний какой?

да, древний )
gcc version 3.4.6


"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 23:06 
в clear_stack_to_table_body_context() ребята явно хотели использовать node, но забыли. мой gcc удивился.

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 22:50 
p.s. багфикс накати.

"Компания Google открыла код Gumbo, библиотеки для..."
Отправлено arisu , 16-Авг-13 23:03 
> пару дней назад решил попробовать эту либу в проекте mosync, сборка и
> использование без всяких вопросов за счет c99, чистенько :)

а вообще, после libsgml несколько напрягает отсутствие ссылок на sibling'ов. пришлось, чтобы логику программы не особо ломать, кидаться не просто указателем на ноду, а структурой «нода, индекс в родителе».