Python MD5编码HTML,提供两种不同的结果

Python MD5编码HTML,提供两种不同的结果,python,python-3.x,md5,checksum,hashlib,Python,Python 3.x,Md5,Checksum,Hashlib,有人能解释为什么会这样吗?如果我使用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("C

有人能解释为什么会这样吗?如果我使用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())
结果如下:

校验和1:E0B253903327C7F68A752C692D8B47A
校验和2:3aaf94e0df9f1298d61830d99549ddb0

在文本模式下读取文件时,Python可能会根据提供给
open
的参数值转换换行符

从流读取输入时,如果换行符为None,则启用通用换行符模式。输入中的行可以以'\n'、'\r'或'\r\n'结尾,这些行在返回给调用方之前会被转换为'\n'。如果为“”,则启用通用换行符模式,但行尾将返回给调用方,而不进行翻译


此差异将影响生成的哈希值。

内容必须不同。长度一样吗?如果比较html和html2会发生什么情况?请尝试:
print(type(html)、len(html)、type(html2)、len(html2))
。您可能需要将
、encoding='utf-8'
添加到第一个
打开(…)
call.newlines conversion?在open中使用
rb
而不是
r
wb
而不是
w
,以避免换行。