我有一些简单的python代码向服务器发出请求
html_page = urllib2.urlopen(baseurl, timeout=20)
print html_page.read()
html_page.close()
当我试图抓取一个带有' - '(短划线)字符的页面时。它是浏览器中的破折号,但是当我尝试打印出urlopen响应的请求时,它会打印为“?”。我尝试使用本地文件重新创建html页面,从源代码复制受影响的文本,但我无法重新创建它。
还有哪些其他因素/变数?这可能与编码有关吗?
更新:我现在知道这个问题与编码有关。我编码的网站'iso-8859-1'。问题是即使遵循Python: Converting from ISO-8859-1/latin1 to UTF-8
,我仍然无法解码它该字符在解码时会给我:
>>>text.decode("iso-8859-1")
u"</strong><p>Let's\x97in "
>>> text.decode("iso-8859-1").encode("utf8")
"</strong><p>Let's\xc2\x97in "
>>> print text.decode("iso-8859-1").encode("utf8")
</strong><p>Let'sin
角色完全消失了。有人有什么想法吗?
答案 0 :(得分:1)
感谢亚当罗森菲尔德,我想出了我的问题。该网站表示charset是iso-8859-1
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
BU!我遇到问题的角色是“em dash”,在Windows-1252中编码
>>> text.decode("windows-1252")
</strong><p>Let's\u2014in"
>>> print text.decode("windows-1252")
</strong><p>Let's—in
谢谢你们!