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

源 | 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名单中的网页,由于之前未有计算杂凑值,故此首次检查都表明是有更新。

640?

Github传送门:

checksiteupdate.py

640?

今日推荐

《Python项目开发实战》

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

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

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

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

教程并开始创建项目。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值