我知道我可以检查响应标头的“last-modified”值,以确定网页上次修改的时间,但在很多情况下,未提供标头。此外,在许多情况下,内容本身没有改变,但是当前时间/日期显示在页面上,从而给出了修改的外观。
有关如何克服上述问题以及确定网页是否已经(真正)修改过的任何建议?
感谢。
答案 0 :(得分:1)
不确定。为自己定义什么算作“修改”(例如,只有“内容”div中的内容)并且仅查看它。
如果你无法找到决定是否有某些内容被改变的方法,那么你就不能指望一台电脑......
答案 1 :(得分:0)
检测页面更改的可靠方法是下载并校验它。如果校验和发生变化,则页面已被编辑(具有极高的确定性)。
以下是一个适用于命令行的示例:
curl -s news.ycombinator.com | md5 #=> d86582bec138c051b0d8322f7823a23c
那是几分钟前的事。如果你现在运行它,你会得到一个不同的答案!
答案 2 :(得分:0)
你在这里问两个问题:
要回答问题#1,您必须经常检查该页面以满足您的粒度要求,例如:每小时,每天,每周等。这可能是非常耗费资源的。这取决于你是否真的需要知道这一点。
要回答问题#2,您需要比较一些事情。你可以做@Paul Rosnia建议的内容,但是如果他们添加了逗号,它将被视为修改。
然后,您可能还想查看已修改的内容。然后,您必须保存内容并将它们相互比较,以突出显示更改。
您可以使用http://php.net/manual/en/function.file-get-contents.php和CRON作业来缓存服务器上的页面,然后按比例对比缓存。比较部分将是棘手的部分,因为你必须编写特定的代码来忽略对你无关紧要的事情,例如日期/时间戳,标题更改,菜单更改等。