сравнение веб-страниц - simhash и обработка граничного узла DOM - PullRequest
0 голосов
/ 11 января 2012

Это еще не проблема программирования!

Но я смотрю, как бы вы сравнили веб-страницы, чтобы увидеть, являются ли страницы одинаковыми / похожими. Это личный проект, а не для работы / школы ... (просто говори!)

Я нашел несколько базовых реализаций simhash, и мне было интересно, кто-нибудь может указать мне на действительно хорошую надежную реализацию py / php simhash. Я бы не стал изобретать колесо на этом.

Кроме того, я заинтересован в том, чтобы потенциально иметь возможность вычислять / генерировать структуру DOM для данной страницы, а затем вычислять узлы "конец / край" дерева / структуры, чтобы определить, может ли это быть подходом к определению Сходство страниц.

Итак, меня также интересует любой инструмент / приложение, которое можно использовать для генерации списка структуры DOM для данной страницы. Я бы подумал, что сетевой поиск привел бы к созданию нескольких py / php / apps для генерации такого рода графиков / списков для целей тестирования.

Я также могу понять, что, возможно, просто использовал неправильные термины в моем поиске.

1 Ответ

0 голосов
/ 17 января 2012

Хорошо, поэтому в комментариях выше вы сказали, что вас не волнует, что js с сайта может сделать для DOM. Поэтому, чтобы ответить на первую часть вопроса, вам нужно проанализировать HTML с помощью lxml, BeautifulSoup или один из других HTML-анализаторов Python, производящих DOM.

Например, используя lxml, вы можете получить все «листовые» элементы

>>> from lxml import etree
>>> html = etree.HTML("<html><body><div class='content'>...</div><div class='advert'>....</div></body></html>")
>>> leaves = [d for d in html.iterdescendants() if len(d.getchildren()) == 0]
>>> leaves[0].text
'...'

Быстрый Google для "python simhash" предоставил множество возможных реализаций, включая python-hash , что для меня выглядит хорошим решением. Тем не менее, это та операция, которая выиграет от производительности на уровне C, поэтому, если вы планируете широко использовать ее в работе, я бы нашел популярную реализацию C с привязками Python.

HTH:)

...