Python 为获取的网页创建校验和

Python 为获取的网页创建校验和,python,Python,我正在使用Python2.7并使用请求获取网页 我想知道获取的对象是否已更改 r = requests.get(url,headers=None,proxies=None,timeout=int(parms['timeout'])) html = r.text if checksum(html)!=checksum_last: then do something else: do nothing 我将把校验和保存在db中。如何创建校验和 谢谢正如Jon Clements提到的

我正在使用Python2.7并使用请求获取网页

我想知道获取的对象是否已更改

r = requests.get(url,headers=None,proxies=None,timeout=int(parms['timeout']))
html = r.text

if checksum(html)!=checksum_last: 
   then do something
else:
    do nothing
我将把校验和保存在db中。如何创建校验和


谢谢

正如Jon Clements提到的,您可以使用该模块:


正如Jon Clements提到的,您可以使用该模块:


假设您不需要加密哈希函数,您可以使用或从zlib获得


假设您不需要加密哈希函数,您可以使用或从zlib获得


看看内置的hashlib模块……看看内置的hashlib模块……这两个模块都有不同版本的Python,在某些情况下可能会不方便使用。@agf With.encodeutf-8,此代码在2.7和3.3中的工作方式似乎相同。@agf有趣-您手头有参考资料吗?@JonClements签出:在2.6版中更改:返回值在[-2**31,2**31-1]范围内,无论平台如何。在旧版本中,该值将在某些平台上签名,而在其他平台上未签名。在版本3.0中更改:返回值是无符号的,并且在[0,2**32-1]范围内,与平台无关。@agf他们特别提到他们使用的是Python 2.7,所以这应该不是问题。在Python<2.6的任何模块中都会发现一个严重的问题。这两个模块都有不同版本的Python,这在某些情况下会给使用带来不便。@agf With.encodeutf-8,此代码在2.7和3.3中的工作方式似乎相同。@agf有趣-您手头有参考资料吗?@JonClements签出:在2.6版中更改:返回值在[-2**31,2**31-1]范围内,无论平台如何。在旧版本中,该值将在某些平台上签名,而在其他平台上未签名。在版本3.0中更改:返回值是无符号的,并且在[0,2**32-1]范围内,与平台无关。@agf他们特别提到他们使用的是Python 2.7,所以这应该不是问题。在Python<2.6的任何模块中都可以发现一个严重的问题。
>>> import requests
>>> import hashlib
>>> page = requests.get('http://www.stackoverflow.com')
>>> hashlib.sha256(page.text.encode('utf-8')).hexdigest()
'807ea5e7c419aefc7a40ba1140ba6ef4001c60f3c21142eb743bc1d393c1bb62'
>>> 
r = requests.get(url,headers=None,proxies=None,timeout=int(parms['timeout']))
html = r.text
if zlib.adler32(html.encode("utf-8")) != checksum_last:
    print("New page!")