1

我有一些未知的网页,我想确定它们来自哪些网站。我有来自每个网站的示例网页,我假设每个网站都有一个独特的模板。我不需要完全确定,也不想使用太多的资源来匹配每个网页。因此,为网页抓取每个网站是不可能的。

我想最好的方法是比较每个网页的 DOM 的树结构。有没有图书馆可以做到这一点?

理想情况下,我追求的是基于 Python 的解决方案,但如果有一种我可以理解和实现的算法,那么我也会对此感兴趣。

谢谢

4

2 回答 2

4

您可以通过贝叶斯分类来做到这一点。首先将每个站点的一些页面输入分类器,然后可以针对它们测试未来的页面以查看它们的匹配程度。

贝叶斯分类器库在这里可用:reverend (LGPL)

简化示例:

# initialisation
from reverend.thomas import Bayes
guesser = Bayes()
guesser.train('site one', site_one_page_one_data)
guesser.train('site one', site_one_page_two_data)
# ...etc...
guesser.train('site two', site_two_page_one_data)
guesser.train('site two', site_two_page_two_data)
# ...etc...
guesser.save()

# run time
guesser.load()
results = guesser.guess(page_I_want_to_classify)

为了获得更好的结果,首先标记化 HTML。但这可能没有必要。

于 2009-08-28T09:50:36.763 回答
0

您可以尝试的一种快速而肮脏的方法是将 html 源代码拆分为 html 标签,然后比较生成的字符串集合。您应该最终收集标签和内容,例如:

item[n] ="<p>"
item[n+2] ="This is some content"
item[n+2] ="</p>"

我认为正则表达式可以在几乎所有语言中做到这一点。

除标签外,某些内容将是相同的(菜单等)。我认为对事件进行数字比较就足够了。当您在同一位置具有相同的标签/内容时,您可以通过给出一些“点”来改进。也许相当数量的收藏品的“组合”可以给你确定性。

于 2009-08-28T08:02:54.170 回答