urllib2.urlopen中的内容问题

时间:2012-07-26 17:36:04

标签: python web-scraping

我有一些简单的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

角色完全消失了。有人有什么想法吗?

1 个答案:

答案 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

谢谢你们!