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