我正在编写一个 Python 程序,它使用谷歌搜索 API 向谷歌提供搜索词并下载前 10 个结果。我能够在 Python 2.6 中做到这一点,如下所示:
query = urllib.parse.urlencode({'q' : 'searchterm','start' : k},doseq=false)
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' \
% (query)
results = urllib.urlopen(url)
resultsjson = json.loads(results.read())
betterResults += resultsjson["responseData"]["results"]
Google 的搜索 API 以 json 形式返回结果,因此我使用上面的代码将结果下载到我的 json 中并将它们解析为列表(betterResults)。
当我切换到 Python 3 时,我的程序开始抛出异常。显然,在 Python 2.6 中, urlopen() 返回的对象是一个类似文件的对象,可以加载到 json 中。在 Python 3.1 中,返回的对象是一个 HTTPResponse 对象,它确实包含一个 read() 方法,这是 json 规范所要求的,但它是一个字节对象。因此,我无法访问 2.6 中的信息。
有什么办法可以访问google返回的json?如何在 Python 3 中获得结果并能够选择我想要的字段,就像我对 json 所做的那样?
非常感谢,bsg