我有一些简单的python代码,可以用urllib2抓取网页:
response = urllib2.urlopen(url)
charset = response.headers.getheader("Content-Type")
charset = charset[charset.index("charset=") + 8:]
html = response.read()
html = " ".join(html.split())
html = html.decode(charset)
html = html.replace("amp;", "").replace("'", "'")
我的问题是,我正在抓取的页面中有一些毛利语单词,因此它有许多包含长音符的单词,例如“pūtaiao”。当我打印HTML时,所有的长音符都被问号代替,而且我没有使用任何替换解码方法。它甚至在没有任何解码、分裂或连接的情况下发生。在
在同一个站点上还有另一个页面,其中包含了一些相同的单词,而macron在python中显示得非常好。我还注意到,该页的响应标题中的字符集是utf-8,而带有问号的页面是ISO-8859-1,所以这可能与之有关。在
带问号的站点链接是http://www.nzqa.govt.nz/ncea/assessment/search.do?query=reo+maori&view=all&level=01。在
另一页是http://www.nzqa.govt.nz/qualifications-standards/qualifications/ncea/subjects/
在第一个链接上使用请求和靓汤。在
哪一行取决于你下一步要做什么。在
注意使用Anand建议的标题
当服务器无法识别请求来自的用户代理时,服务器似乎用错误的内容类型响应。当我在我的机器上尝试时,得到了类似的结果。在
在将有效的
User-Agent
添加到请求头之后,我能够正确地获得响应的utf-8
编码。我不确定这是否是解决这个问题的最佳方法,但它应该能让您的代码正常工作。示例-相关问题 更多 >
编程相关推荐