LINUX.ORG.RU

«умный» анализатор html


0

0

Нужен алгоритм, которым можно определять "логически связанные" блоки на странице сайта.

У меня есть одна идея (на базе khtml или gecko измерять расстояние (в пикселях) между элементами страницы и потом кластеризировать элементы), но возможно кто-то поймет, что я написал :), и подскажет еще решение.

Спасибо.

anonymous

Использовать геку или кхтмл - это как чесать правое ухо левой рукой ИМХО. Ну сам посуди, ведь чтобы определять "расстояние в пикселях" движки же уже анализируют логические связанные блоки.

Не проще ли взять библиотеку XML/HTML и там определять в каком разделе тот или иной текст находится? Ведь парсеры будут строить деревья именно по логической структуре документа.

В общем, подход с пикселями звучит на слух ужасно.

atoku ★★★
()
Ответ на: комментарий от atoku

>чтобы определять "расстояние в пикселях" движки же уже анализируют логические связанные блоки.

да, но они анализируют связанные теги. Так понимаю, что движки не "мыслят" в категориях конечного пользователя (т.е. что он видит), они лишь размещают элементы в том или ином месте экрана.

>Не проще ли взять библиотеку XML/HTML и там определять в каком разделе тот или иной текст находится?

Насколько я понимаю, тогда анализ будет происходить на основе тегов (т.е. "связанность" блоков определяется на основании вложености их в те или иные теги)? Я думал, что анализ на основе визуализации (т.е. исходя из расстояния между блоками/взаимного расположения блоков) будет лучше, так как позволит обрабатывать страницы, у которых связанные блоки находятся в несвязанных тегах (например 2 соседние колонки текста в 2-х различных таблицах. Анализируя теги, нельзя сказать, что они связаны, но так как расположены они рядом, то "визуально" понятно, что это - связанный текст).

>Ведь парсеры будут строить деревья именно по логической структуре документа.

а можно конкретнее: кто "умеет" "различать" логические блоки? Просто гугл по запросу "XML/HTML" очень много выдаст))

>В общем, подход с пикселями звучит на слух ужасно.

Согласен, но с ходу ничего лучшего не придумал :(

anonymous
()

Что ты подразумеваешь под "логически связанные", и опиши более подробно задачу, возможно решение где то на поверхности, но по такому скудному описанию проблемы трудно что то советовать.

aton
()
Ответ на: комментарий от aton

> Что ты подразумеваешь под "логически связанные", и опиши более подробно задачу, возможно решение где то на поверхности, но по такому скудному описанию проблемы трудно что то советовать.

Я могу ошибаться, но возможно речь идет об индексации содержания страницы. Эта задача очень активно разработана.

Вообще-то пытаться угадать логику исходя из верстки (как видит дизайнер) может и не так тупа, как мне показалась сначала. Но с другой стороны совершенно непонятно как это формализовать. Расстояние в пикселях кажется не слишком умным. Расположение блоков исходя из статистики по сайтам или из того, как это делают основные CMS, может быть интереснее. Но все равно, это слишком сложно и трудно формализовать.

Вероятно, тебе подскажет поиск по словам типа "индексация", "алгоритмы поиска в интернете" и тому подобное.

atoku ★★★
()

Хреновое решение. У нас такие дизайнеры, что работать оно будет дай Бог в 20%.

Советую "пересечь" полученный результат с расстоянием в коде страницы. Т.к. логически связанные части редко стоят далеко друг от друга именно в коде :).

soomrack ★★★★
()
Ответ на: комментарий от atoku

>Я могу ошибаться, но возможно речь идет об индексации содержания страницы.

Вы правы, только 1)хочу индексировать не всю страницу, а нужную информацию; 2)хочу учитывать "иерархию" информации на странице (т.е. отношения "раздел" - "элемент раздела"); 3)возможно еще что-то :) - пока думаю, возможно ли это в принципе.

Прошу прощения, что плохо описал задачу.

>Расстояние в пикселях кажется не слишком умным. Расположение блоков исходя из статистики по сайтам или из того, как это делают основные CMS, может быть интереснее. Но все равно, это слишком сложно и трудно формализовать.

Наверняка надо будет реализовать все предложенные в треде варианты и смотреть на результаты. Аналитически предсказать тут имхо не получится :( Про формализацию вы наверняка правы, но буду пробовать реализовывать некую семантическую обработку информации во время индексации (пусть пока в сильно суженной предметной области).

>Вероятно, тебе подскажет поиск по словам типа "индексация", "алгоритмы поиска в интернете" и тому подобное.

Спасибо.

anonymous
()
Ответ на: комментарий от soomrack

>Хреновое решение. У нас такие дизайнеры, что работать оно будет дай Бог в 20%.

Согласен, что верстают, кому как хочется (и как с такими сайтами Семантический веб делать?:) ).

Но рассчитываю, что определение блоков на основе "внешнего вида" сайта может помочь: какой бы кривой хтмл-код не был, как-то отображаться страница должна. Если обрабатывать уже не хтмл, а это "отображение", то нам должно бы быть одинаково, какой кривой там код внутри.

>Советую "пересечь" полученный результат с расстоянием в коде страницы. Т.к. логически связанные части редко стоят далеко друг от друга именно в коде :).

Спасибо, наверняка буду делать анализ на основе нескольких принципов, в т.ч. и этого.

anonymous
()
Ответ на: комментарий от atoku

>Не проще ли взять библиотеку XML/HTML

И еще. Что вы имели ввиду под словами "библиотеку XML/HTML"? Какую-то конкретную библиотеку? Подскажите, куда копать :)

anonymous
()
Ответ на: комментарий от Valeriy_Onuchin

>правильно я понимаю, что Вы хотели бы построить "дерево" содержимого HTML страницы?

Если под "содержимым" понимать именно контент (текст, картинки и т.д.), а не HTML, то правильно.

anonymous
()
Ответ на: комментарий от anonymous

рекомендую посмотреть http://tkhtml.tcl.tk/
если бы от туда убрать tk/tcl лабуду, а оставить только html/css
parsing который создает html tree, - это было бы "само то".

Valeriy_Onuchin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.