如何有效判断网页是不是来自网站

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>"

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

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

【讨论】:

以上是关于如何有效判断网页是不是来自网站的主要内容,如果未能解决你的问题,请参考以下文章

如何批量判断excel里面链接的有效性(是不是可以打开)?

怎么在不打开网页的情况下判断链接是不是有效?

JAVA判断一个URL是不是有效

如何判断网页是不是加载完毕

如何判断自己的网络环境是不是支持ipv6

如何判断动态加载的图像是不是存在