我正在使用python 3.4。
当我在utf-8文件上使用urllib.request.urlretrieve(link, filename="file.html")
时,生成的file.html未正确编码。如何确保使用utf-8编码文件?
在这种情况下如何实现.decode(utf-8)?
这是页面的原始部分:
«Écoute,mon peuple,je parle;
Moi,Dieu,je suis ton Dieu! Je Je pas pas pas p p p;
tes holocaustes sont toujours devant moi。
««je se prendrai pas un seul taureau de ton domaine,
pasunbélierdetes enclos。
Tout le gibierdesforêtsm'appartient
et lelebétaildeshautspâturages。
“Si j'ai faim,irai-je te le dire?
Le monde et sa richesse m'appartiennent。
Vais-je manger la chair des taureaux
et boire le sangdesbéliers?
««Qu'as-tuàrécitermeslois,ààdetermonmonianceàlabouche,
toi qui n'aimes pas les reproches
et rejettes loin de toi mes paroles? »
这就是我在保存的文件中得到的结果:
coute,mon peuple,je parle;
Moi,Dieu,je suis ton Dieu! Je Je Je pas pas p p tes tes tes
tes holocaustes sont toujours devantmoi.
Jene prendrai pas un seul taureau de ton domaine,
pasunb lierdetesenclos.
Tout le gibierdesfor tsm'appartient
et leb taildeshautsp turages。
Sij'ai faim,irai-je te le dire?
Le monde et sa richessem'appartiennent. Vais-je manger la chair des taureaux
et boire le sangdesb liers?
'as-tu r citermes lois,
garder mon alliance la bouche,
toi qui n'aimes pas les reproches
et rejettes loin de toi mes paroles?
我注意到在页面的某些部分,重音字符不是真正的utf-8编码,但浏览器正确显示它。例如,É
而不是É
,当文件被下载时,这似乎会导致问题。
答案 0 :(得分:1)
您可以使用显示here的方法逐行取消文件中的HTML转义序列。
import html.parser
h = html.parser.HTMLParser()
with urllib.request.urlopen(link) as fin, open(
"file.html", 'w', encoding='utf-8') as fout:
for line in fin:
fout.write(h.unescape(line.decode('utf-8')))
答案 1 :(得分:0)
我建议用它来为你处理:它将加载的文件实现转换为utf-8
markup = "<h1>Sacr\xc3\xa9 bleu!</h1>"
soup = BeautifulSoup(markup)
soup.h1
# <h1>Sacré bleu!</h1>
soup.h1.string
# u'Sacr\xe9 bleu!'
BeautifulSoup文档:here