有人可以帮助解释为什么会这样吗?如果我使用requests模块从站点抓取HTML,并使用hashlib获取md5校验和,则会得到一个答案。然后,如果我将html保存为html文件,请打开它,并执行相同的md5校验和,这将为我提供不同的校验和。
import requests
import hashlib
resp = requests.post("http://casesearch.courts.state.md.us/", timeout=120)
html = resp.text
print("CheckSum 1: " + hashlib.md5(html.encode('utf-8')).hexdigest())
f = open("test.html", "w+")
f.write(html)
f.close()
with open('test.html', "r", encoding='utf-8') as f:
html2 = f.read()
print("CheckSum 2: " + hashlib.md5(html2.encode('utf-8')).hexdigest())
结果如下:
CheckSum 1: e0b253903327c7f68a752c6922d8b47a
CheckSum 2: 3aaf94e0df9f1298d61830d99549ddb0
答案 0 :(得分:1)
以文本模式从文件中读取时,Python可能会根据提供给open
的{{3}}参数的值来转换换行符。
从流中读取输入时,如果换行符为None,则启用通用换行符模式。输入中的行可以以'\ n','\ r'或'\ r \ n'结尾,在返回给调用者之前,这些行会转换为'\ n'。如果为“”,则启用通用换行模式,但行结尾不翻译就返回给呼叫者。
这种差异将影响生成的哈希值。