您现在的位置是:首页 > 文章详情

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

日期:2018-10-07点击:364

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

63390f1a9763648f6db5dcd0186e4be04ec765da

Github传送门:

checksiteupdate.py

b269b935d2eab4269424c7abc2eb7d733a8483ed

原文发布时间为:2018-10-1
本文来自云栖社区合作伙伴“ 机器学习算法与Python学习”,了解相关信息可以关注“ 机器学习算法与Python学习”。
原文链接:https://yq.aliyun.com/articles/648259
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章