工作需要实现监控一个网页的变化,一旦远程某个网页的代码或者内容更新了,马上发出提示。之前考虑过,抓取网页,保存网页,抓取-比对的方案,但是这样做不但访问的频率会受到限制,而且效率也很低。无法满足高效精准的要求。其实,根据浏览器的缓存原理,利用Last-Modified属性,可以做到高效且精准的监控。

Last-Modified属性技术原理:

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:

Last-Modified: Fri, 12 May 2006 18:53:33 GMT

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

If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

利用此属性,基本可以实现监控网页变化,在两秒钟之内如果网页发生变化,出现提示,代码如下:

# coding: UTF-8

# filename: moniter.py

import time

import requests

url = 'http://www.abc.com/test.html'

last_modified = ''

def get_page():

global last_modified

headers = {

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

'Accept-Encoding':'gzip, deflate',

'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',

'Connection':'keep-alive'

}

if last_modified:

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

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

if res.status_code == 200:

if last_modified and last_modified is not res.headers['Last-Modified']:

print 'page has changed\r',

return False

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

elif res.status_code == 304:

print 'normal\r',

return True

if __name__ == '__main__':

while 1:

result = get_page()

if result:

time.sleep(2)

else:

break

未完,待续...

python监测网页变化_Python利用Last-Modified实现监控网页变化相关推荐

  1. python爬取网页停止_Python爬虫之爬取静态网页

    所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息.所以,想要学习python爬虫,需要具备一些http的 ...

  2. python绘制渐变图_Python利用imshow制作自定义渐变填充柱状图(colorbar)

    目的 在各种各样的理论计算中,常常需要绘制各种填充图,绘制完后需要加渐变填充的colorbar.可是有些软件如VMD,colorbar渲染后颜色分布有些失真,不能较准确的表达各颜色对应的数值.用ps中 ...

  3. python单词词频字典_python利用多种方式来统计词频(单词个数)

    python的思维就是让我们用尽可能少的代码来解决问题.对于词频的统计,就代码层面而言,实现的方式也是有很多种的.之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类 ...

  4. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  5. python numpy 子数组_Python利用Numpy数组进行数据处理(一)

    Numpy数组使你可以将许多种数据处理任务表达为简洁的数组表达式(否则需要编写循环).用数组表达式代替循环的做法,通常被称为矢量化. np.meshgrid函数接受两个一维数组,并产生两个二维矩阵(对 ...

  6. python概率随机抽奖_Python利用带权重随机数解决抽奖和游戏爆装备

    关于带权随机数 为了帮助理解,先来看三类随机问题的对比: 1.已有n条记录,从中选取m条记录,选取出来的记录前后顺序不管. 实现思路:按行遍历所有记录,约隔n/m条取一个数据即可 2.在1类情况下,还 ...

  7. python的api库_python 利用toapi库自动生成api

    在学习做接口测试自动化的时候,我们往往会自己动手写一些简单的API,比如写一个简单的TODO API之类. 不过自己写API的时候经常需要造一些假数据,以及处理分页逻辑,开始的时候还觉得比较有意思,但 ...

  8. python修改mac地址_python利用_winreg模块制作MAC地址修改工具

    通过百度搜索知道,xp下修改MAC地址的方法主要有两个,一种是通过配置本地链接属性来实现,这种方法不适合用程序来完成,另一种是通过修改注册表来完成,本程序主要是利用了这种方法. 具体方法:Window ...

  9. python 三维图 背景_Python利用matplotlib生成图片背景及图例透明的效果

    前言 最近工作中遇到一个需求,在使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,通过查找相关资料找到了大概的设置方法,特此记录,方便自己或者有需要的朋友们参考学习. 示例代 ...

  10. 如何使用python批量压缩图片_python利用Guetzli批量压缩图片

    Google 又开源了,这次开源了一款图像算法工具 Guetzli.Guetzli,在瑞士德语中是"cookie(曲奇)"的意思,是一个针对数码图像和网页图像的 JPEG 编码器, ...

最新文章

  1. 2021年就业力排名TOP10的英国大学
  2. RTEMS文件系统(4):系统调用开发信息(上)
  3. caffe使用过程中遇到的问题和解决办法
  4. python顺序表的实现_python中的顺序表
  5. ansible常用ad hoc操作
  6. java开发者最常去的20个英文网站
  7. matlab2016a的光伏阵列,DAMPPT 光伏电池阵列输出功率受光照强度和温度变化的影响,因此最大 点跟踪( )技 matlab 272万源代码下载- www.pudn.com...
  8. 【C#】通过正则表达式对TextBox进行校验
  9. 安卓导航车机root方法_不破不立,拥抱安卓的全新奥迪A4L到底有多好用?
  10. java中常量池存的是什么_Java中常量池是什么?Java常量池的介绍
  11. eth的geth钱包安装
  12. Guava Splitter,Splitter与Java split的对比
  13. 麦克劳林公式求sin(x)
  14. 高精度数字温度传感器为基于RTD和医疗应用的设计带来简便性
  15. Final Cut Pro资源库占用内存太大如何释放磁盘空间?
  16. IPFS周报-95:你是如何探索IPFS生态的?官方正在调查
  17. 基于最大熵Maxent-ArcGis地理分布预测教程
  18. 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  19. 从零开始学Python人脸识别技术,人工智能不过如此!
  20. linux飞信机器人,安装fetion飞信机器人

热门文章

  1. c语言scanf用法详解
  2. 转《DB2操作指南及命令大全》
  3. MATLAB实现imrotate函数
  4. ACI注册国际心理师/营养师1903期考场规则及注意事项
  5. 介绍几款可以在手机上用来学习编程的软件
  6. EasyCamera中海康摄像头语音对讲和云台控制转发实现
  7. MATLAB周期时域曲线,matlab时域采样定理
  8. 数字信号处理第二次试验:时域采样与频域采样
  9. C语言随机数10到999990,C语言程序设计(高清pdf) 丹尼斯 里奇
  10. 【Unity Shaders】ShadowGun系列之二——雾和体积光