我有一些未知的网页,我想确定它们来自哪些网站。我有来自每个网站的示例网页,我假设每个网站都有一个独特的模板。我不需要完全确定,也不想使用太多的资源来匹配每个网页。因此,为网页抓取每个网站是不可能的。
我想最好的方法是比较每个网页的 DOM 的树结构。有没有图书馆可以做到这一点?
理想情况下,我追求的是基于 Python 的解决方案,但如果有一种我可以理解和实现的算法,那么我也会对此感兴趣。
谢谢
您可以通过贝叶斯分类来做到这一点。首先将每个站点的一些页面输入分类器,然后可以针对它们测试未来的页面以查看它们的匹配程度。
贝叶斯分类器库在这里可用: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。但这可能没有必要。
您可以尝试的一种快速而肮脏的方法是将 html 源代码拆分为 html 标签,然后比较生成的字符串集合。您应该最终收集标签和内容,例如:
item[n] ="<p>"
item[n+2] ="This is some content"
item[n+2] ="</p>"
我认为正则表达式可以在几乎所有语言中做到这一点。
除标签外,某些内容将是相同的(菜单等)。我认为对事件进行数字比较就足够了。当您在同一位置具有相同的标签/内容时,您可以通过给出一些“点”来改进。也许相当数量的收藏品的“组合”可以给你确定性。