我正在教自己如何使用json解析谷歌搜索结果,但是当我运行此代码(这应该有效)时,我收到此错误:UnicodeEncodeError: 'charmap' codec can't encode character u'\u2014' in position 5: character maps to <undefined>
。有人能帮助我吗?
import urllib
import simplejson
query = urllib.urlencode({'q' : 'site:example.com'})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s&start=50' \
% (query)
search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
results = json['responseData']['results']
for i in results:
print i['title'] + ": " + i['url']
答案 0 :(得分:1)
此错误可能是由控制台应用程序在将unicode数据发送到stdout时使用的编码引起的。有an article谈论它。
检查stdout的编码:
>>> import sys
>>> sys.stdout.encoding # On my machine I get this result:
'UTF-8'
答案 1 :(得分:0)
print i[u'title'] + u": " + i[u'url']
此外:
jsondata = simplejson.load(search_results)
答案 2 :(得分:0)
我的猜测是错误在simplejson.loads(search_results.read())行,可能是因为你的python正在拾取的默认编码不是utf-8而google正在返回utf-8。
尝试:simplejson.loads(unicode(search_results.read(),“utf8”)。