2017-09-25 41 views
-2

我想了解如何监测网站的变化作品,以及它背后使用的概念。 我可以考虑创建一个抓取整个网站的抓取工具,将抓取的网页与数据库中的一个商店进行比较,如果网页已更新,则将其覆盖在html中的旧页面,或者如果该网页不存在,则将其存储在数据库中。 所以这里是我的问题: 1-如何比较2个网页,如果他们是相同的?我是否需要按字符比较网页字符的字符串等值? 2-我是否需要抓取整个网站?让我们假设一个网站的HTML页面大小为5Gb,我想每小时检测一次该网站的变化,因此每小时爬行和下载5Gb数据将消耗大量带宽。网站监控如何工作?

我可以编写代码,我只想知道用于监控网站的一般做法。

非常感谢。

+0

我认为它使用最后修改标头确定任何更改。如果有抓取请求,它会再次抓取它。 –

回答

0

一种选择是将页面的散列存储在数据库中,而不是将整个页面存储为HTML。这将允许您检查存储的值。但你仍然必须“阅读”页面才能这样做,所以是的,一个5GB的网站仍然会“下载”5GB来做到这一点。

我假设你只是坚持页面,URL,上次更新,内容哈希等元数据,你还没有真正说过为什么你可能会这样做。

或许正如MartinJoneš所建议的,大部分只是抓取页眉并检查最后修改参数。

我还假设您只在您拥有/运行的网站上执行此操作。没有什么比讨厌我的网站的那些“营销”机器人更不喜欢的了,我的带宽使用量增加了零值。它们只是吃我的带宽而已。

+0

感谢您的详细评论。我只是为了教育目的而努力学习,并试图学习如何抓取工作,特别是搜索引擎如何抓取数百万个网站。另外,最后修改标题对我来说是新的。我认为它只能用于测试网页的最后修改时间,而不是整个网站。是否有可能测试一个网站是否使用类似标题等方式添加*新*网页/内容而不是抓取整个网站? – Anon

+0

要做到这一点,你可以检查一个sitemap.xml,如果提供,你可以比较旧版本,你已经存储。假设该网站将所有页面添加到它的sitemap.xml,他们并不都这样做。 但除此之外,真的不是一个简单的方法。页面本身就是实体,因此如果实施的话,除了站点地图以外,没有中央检查。 搜索引擎使用站点地图,但他们也索引页面上的单词,以便他们清楚地下载整个页面。他们还使用超链接来确定网站结构。 – Tyroga