网站监控网页内容监测(Last-Modified属性技术原理及应用-的属性)

优采云 发布时间: 2022-03-08 16:16

  网站监控网页内容监测(Last-Modified属性技术原理及应用-的属性)

  工作需要监控一个网页的变化。一旦远程网页的代码或内容更新,将立即发出提示。我考虑过爬取网页、保存网页、爬取比较的方案,但这不仅会限制访问频率,而且效率非常低。不能满足高效率、高精度的要求。事实上,根据浏览器的缓存原理,可以使用 Last-Modified 属性进行高效准确的监控。

  Last-Modified 属性技术原理:

  当浏览器第一次请求一个URL时,服务器的返回状态会是200,内容就是你请求的资源,并且有一个Last-Modified属性来标记服务器上最后一次修改文件的时间. 格式类似于:

  最后修改时间:格林威治标准时间 2006 年 5 月 12 日星期五 18:53:33

  当客户端第二次请求这个 URL 时,根据 HTTP 协议的规定,浏览器会向服务器发送 If-Modified-Since 头,询问该时间之后文件是否被修改:

  If-Modified-Since: 2006 年 5 月 12 日星期五 18:53:33 GMT

  如果服务器端的资源没有变化,会自动返回HTTP 304(Not Changed.)状态码,内容为空,从而节省传输数据量。当服务器端代码更改或服务器重启时,重新发出资源,返回类似于第一次请求。这样可以保证资源不会重复发送给客户端,并且当服务器发生变化时,客户端可以获取到最新的资源。

  使用这个属性,基本上可以监控网页的变化。如果网页在两秒内发生变化,会出现提示。代码如下:

  # 编码:UTF-8

  # 文件名:monitor.py

  *敏*感*词*时间

  导入请求

  网址 = '#39;

  最后修改=''

  定义 get_page():

  全局 last_modified

  标题 = {

  '接受':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

  '接受编码':'gzip,放气',

  '接受语言':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',

  '连接':'保持活动状态'

  }

  如果最后修改:

  headers['If-Modified-Since'] = last_modified

  res = requests.get(url, headers = headers)

  如果 res.status_code == 200:

  如果 last_modified 和 last_modified 不是 res.headers['Last-Modified']:

  print '页面已更改\r',

  返回假

  last_modified = res.headers['Last-Modified']

  elif res.status_code == 304:

  打印“正常\r”,

  返回真

  如果 __name__ == '__main__':

  而1:

  结果 = get_page()

  如果结果:

  时间.sleep(2)

  别的:

  休息

  未完待续,待续……

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线