如何有效地确定网页是否来自网站

时间:2009-08-28 06:31:50

标签: python dom web webpage

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

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

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

由于

2 个答案:

答案 0 :(得分: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。但这可能没有必要。

答案 1 :(得分:0)

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

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

我认为正则表达式可以在所有语言中执行此操作。

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