php – 检查页面内容是否已更改的最佳方法?

我有一个爬虫爬行成千上万的页面并索引/解析页面的内容,我正在努力的一件事是检查页面的内容是否已经有效地更新,而不必抓取它并检查页面的内容.

显然我可以只加载整个页面,然后重新解析所有内容并将其全部与我在数据库中存储的内容进行比较.然而,这是非常低效的并且使用大量计算导致高的托管费用.

我正在考虑比较哈希值,问题是如果页面改变了单个字节或字符,则哈希值会有所不同.因此,例如,如果页面在页面上显示当前日期,则每次散列都不同并告诉我内容已更新.

那么……你会怎么做?你会看看HTML的kb大小吗?您是否会查看字符串长度并检查例如长度是否已更改超过5%,内容是否已“更改”?或者是否存在某种哈希算法,如果只更改了字符串/内容的一小部分,则哈希值保持不变?

最佳答案 您可以尝试使用服务器响应中“last-mofidied”标头中包含的值.将其解析为一个漂亮的对象将允许简单的日期比较,让你检查是否应该重新刮.例如(在
Python中使用辉煌的
requests库:

import requests
r = requests.get('http://en.wikipedia.org/wiki/Monty_Python')
site_last_modified_date = r.headers["Last-Modified"]

# from here, just parse the date and compare it with the last recorded date
点赞