源 | The News Len    译 | @IT技术头条

整理 | AI时间

以Python写一个自动检查多个网址是否更新的程式,可以追踪相关网页的最新动态

因为小编工作需要,不时要检查一大堆网站是否有更新或变动,如一些技术博主是否有最新公布的文章,公司的研究部是否发布了最新研究,这些网站不少是没有提供电邮提示,又或RSS的,因此今次以Python写一个自动检查多个网址是否更新的程序,可以追踪相关网页的最新动态。

如何检查一个网页是否有改动呢?理论上当然可以把网页的内容全部下载,然后与上一次下载的内容逐字逐句比较,但这颇为费时失事,较有效率的做法,是比较其杂凑值(hash value)。杂凑值的原理,是把一些资料输入到密码演算法,然后加密成一个固定长度的字串。以MD5的演算法来举例,如果将"carrie lam"以md5加密,则会得出一个32个字符长的杂凑值"2383d47724fe0ec51c1384d404fc3487",若果将"carrie lam"改成"karrie lam",杂凑值便变成"4fc21c59f233f52de83c4e61d6b8ccc5",虽然只是差之毫厘,但其杂凑值已面目全非。

杂凑值的另一个特性,是无论输入多大的数据量,其杂凑值都是一个固定长度的字符,就算你把整个harddisk的数据、或一出电影的档案数据输入,其MD5杂凑值都是32个字符。虽然输入的组合无限,而32个字符的组合看似有限,但都可以确保不同组合出现相同杂凑值的可能性极低,因此杂凑值已被广泛应用于不同用途。加密货币如比特币,便大量应用杂凑值来把交易数据加密,及加入区块链。不过,由于MD5已被破解,故此比特币使用的是更先进的SHA-256及椭圆曲线加密法( Elliptic Curve Digital Signature Algorithm)。

这次制作的这个程序,就是把网页的整页资料下载,并以MD5算法计算其杂凑值,然后与上一次的杂凑值比较,若两者不同,即代表网页已有资料改变,这时便会通知用户。当然,这个简单的程式有其限制,就是即使网页有改变,也不一定是用户想知的资料,用户还是要亲自检查,同时,有些网页可能动态改变内容,令本程式以为网页每次都在更新。

本程序的用处,不是追踪那些更新频密的网页,如新闻网站,而是一些只会间竭性更新的网页,如企业网站或政府部门网页,如果用户需要追踪数十至上百个这些网页,则本程式是一个帮倒忙的选择。

回到程式本身,其结构很简单,用户只需要在名为site的list中,输入自己要追踪的网页,程式会建立一个json档案,然后把网址及其杂凑值存入,在下次再执行程式时,便会比较网址最新的杂凑值与上次储存的杂凑值是否一致,若否则指出网页有更新或变动。用户可以自由修改或增删网页名单,程式会自动更新json档案,但若是新加入site名单中的网页,由于之前未有计算杂凑值,故此首次检查都表明是有更新。

Github传送门:

checksiteupdate.py

今日推荐

《Python项目开发实战》

通过实际项目增强你的Python技能

  本书为你呈现真实世界中的Python编程

覆盖了基本的创建应用、构建和封装库

在有经验的Python教员一直为你提供有价值的帮助下

教程并开始创建项目。

Python实战 | 如何一次检查大量网页是否更新?相关推荐

  1. 10月8日云栖精选夜读 | 如何一次检查大量网页是否更新?

    以Python写一个自动检查多个网址是否更新的程式,可以追踪相关网页的最新动态 因为小编工作需要,不时要检查一大堆网站是否有更新或变动,如一些技术博主是否有最新公布的文章,公司的研究部是否发布了最新研 ...

  2. python实战-03-币安量化机器人API接入(更新中)

    目录 1.安装币安binance包/库 2.调试binance-connector 3.从币安测试网开启 4.现货下单.撤单.查询接口

  3. Python实战——1_1.网页制作

    Python实战--1_1.网页制作 引言 网页的组成部分: CSS样式 - 给结构以装饰 Html - 结构部分 JavaScript- 功能实现 代码部分 第一部分为网站的基本结构(在IDE中新建 ...

  4. Python 实战系列-微信或网页远程控制电脑

    Python 实战系列-微信或网页远程控制电脑 本系列课程为Python实战系列课程:使用微信控制电脑,使用Python的Web框架Flask搭建网页, 并使用网页控制电脑:使用wxPython编写图 ...

  5. python实战1.0——爬取知乎某问题下的回复

    python实战1.0--爬取知乎某问题下的回复 确定问题 爬取 进行简单筛选 保存数据 # 获取问题下的回复总数 def get_number():url = 'https://www.zhihu. ...

  6. 【Python实战】用Scrapyd把Scrapy爬虫一步一步部署到腾讯云上,有彩蛋

    接着之前的几篇文章说. 我把爬虫已经写好了,而且在本地可以运行了. 这个不是最终的目的啊. 我们是要在服务器上运行爬虫. 利用周末,同时腾讯送的7天云服务器体验也快到期了 就在这里再来一篇手把手的将爬 ...

  7. Python实战项目:高血压检测项目调查问卷接口的测试

    Python实战项目:高血压检测项目调查问卷接口的测试 在前面的Python实战项目中介绍过高血压检测项目和自动化综合测试的相关内容,那么如何结合自动化综合测试的内容进行高血压检测项目的测试呢,尤其是 ...

  8. Python实战案例:高血压项目详解(上)

    Python实战项目 高血压项目详解(上) 涉及内容:爬虫&开发&数学分析&数据挖掘 a.前端界面的技术--> Juqery Mobile (JQM),俗称"机 ...

  9. Python实战教程专栏完整目录

    Python实战教程专栏完整目录 专栏说明如下 完整专栏目录如下 专栏说明如下 内容:Python实战教程 数量:280篇博文(2023年3月17日截止) 更新时间至:2023年3月17日(后续加上去 ...

最新文章

  1. 阿里P7背调红灯:被前前公司说坏话,修改领导名被查!
  2. kong组件_KONG基础使用-阿里云开发者社区
  3. TikTok英国市场你不能不知道的10大数据
  4. php mysql结果集转数组,几种mysql查询结果转换为PHP数组的方法
  5. java esp_在我的ESP游戏方法中非法开始表达
  6. python量化交易第一天_《Python量化交易教程》第一部分新手入门 第1天:谁来给我讲讲Python?...
  7. 软件安装(JDK+MySQL+TOMCAT)
  8. Python学习笔记——算术操作符和优先级问题
  9. BroadCastReceive的理解和使用
  10. UNBUNTU下与VirtualBox的WINDOWS共享文件夹
  11. node2vec python_图上的机器学习系列-聊聊Node2vec
  12. pdf编辑器怎么使用
  13. java406错误_Java项目部署遇到406错误
  14. 小米洪锋:跟7000万MIUI用户谈谈
  15. 计算机毕业设计Java“小蜜蜂”校园代取快递系统(源码+系统+mysql数据库+lw文档)
  16. echarts将x轴展示在图标上方
  17. 让聊天机器人同你聊得更带劲 - 对话策略学习
  18. 【分享】“飞书第三方“在集简云平台集成应用的常见问题与解决方案
  19. thinkPHP基于php的衡水游泳馆管理系统--php-计算机毕业设计
  20. vue项目中使用地址选择插件v-distpicker,省市区三级联动选择

热门文章

  1. Python提取Word中的所有图片
  2. 利用形状图层绘制八卦图
  3. 5.5 图层样式的复制和粘贴 [原创Ps教程]
  4. js中的运算符操作顺序
  5. 2020-11-25 多行文本或段落的折叠与展开
  6. echarts中如何配置图例形状、图标宽高、图标和文字间距、图例位置、文字颜色、字体大小
  7. mysql怎么批量导入excel数据_phpmyadmin怎么批量导入excel数据到mysql
  8. 计算机刚开始学什么时候,新手如何开始学电脑 新手学电脑从何入门
  9. 蓝桥杯省一经验分享-2020
  10. SpringBoot定时任务说明