2010-06-23 3 views
2

Если я скажу 20 страниц HTML, и я хочу извлечь общие/похожие части документов, какие эффективные способы сделать это?Найдите сходства между блоками текста между многими документами HTML?

Так что скажем, для StackOverflow, сравнив 10 страниц, я обнаружил бы, что верхняя панель и панель главного меню одинаковы на каждой странице, поэтому я мог бы их извлечь.

Кажется, мне понадобится программа diff или некоторые сложные регулярные выражения, но предположим, что я заранее не знаю структуры страницы/текста/html.

Возможно ли это?

+0

Возможный дубликат [diff a ruby ​​string or array] (http://stackoverflow.com/questions/80091/diff-a-ruby-string-or-array) – sawa

ответ

1

Вы должны рассмотреть вопрос о clone detector such as CloneDR. Хорошие сравнивают структуру тысяч файлов одновременно, независимо от форматирования, и расскажут вам, какие файлы имеют общие элементы и как эти общие элементы меняются.

CloneDR был применен ко многим программистам langauges. Его основа, DMS Software Reengeering Toolkit, уже обрабатывает (грязный) HTML, поэтому было бы довольно легко построить HMTL CloneDR.

+0

related: http://stackoverflow.com/ д/590136/946850 – krlmlr

0

Вам не нужны сложные регулярные выражения; просто простой анализатор diff. Просто сделайте (Enumerable) инъекцию, сохранив только те же части, что и ваша заметка.

Вот некоторые в Ruby:

  • ruby-diff - Реализует алгоритм текста дифф из Perl
  • diff-lcs
  • HTMLdiff - находит разность двух строк, и делает с довольно форматирования (HTML) (Возможно, не совсем то, что вы хотите, если только вы не можете удалить все недиффузионные материалы с выхода)

Надеюсь, это поможет!

Смежные вопросы