将Google Ajax搜索转换为python词典

将Google Ajax搜索转换为python词典,python,ajax,json,eval,Python,Ajax,Json,Eval,我试图编写一个脚本,获取谷歌的ajax搜索结果(例如:),并下载每个文件。现在,我一直在尝试将响应转换为python字典,以便更容易地进行转换 import subprocess import ast subprocess.call("curl -G -d 'q=filetype:pdf&v=1.0' http://ajax.googleapis.com/ajax/services/search/web > output",stderr=subprocess.STDOUT,sh

我试图编写一个脚本,获取谷歌的ajax搜索结果(例如:),并下载每个文件。现在,我一直在尝试将响应转换为python字典,以便更容易地进行转换

import subprocess
import ast

subprocess.call("curl -G -d 'q=filetype:pdf&v=1.0' http://ajax.googleapis.com/ajax/services/search/web  > output",stderr=subprocess.STDOUT,shell=True)
file = open('output','r')
contents = file.read()
output_dict = ast.literal_eval(contents)
print output_dict
当我运行它时,我得到:

$ python script.py 
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
100  2643    0  2643    0     0  15926      0 --:--:-- --:--:-- --:--:-- 26696
Traceback (most recent call last):
  File "script.py", line 7, in <module>
    output_dict = ast.literal_eval(contents)
  File "/usr/lib/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib/python2.7/ast.py", line 63, in _convert
    in zip(node.keys, node.values))
  File "/usr/lib/python2.7/ast.py", line 62, in <genexpr>
    return dict((_convert(k), _convert(v)) for k, v
  File "/usr/lib/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

上帝用了很长的时间格式化了谷歌返回的JSON,所以用它来代替你现在使用的ast模块

file = open('output','r')
output_dict = json.load(file)

您可能还想研究加载URL响应的方法,而不是依赖于curl。

将其更改为json不起作用。。。我试图同时使用urllib2,但我认为这不会有帮助,因为这是一次性交易,可能是肮脏的编码。我可以完美地将您的示例解码为JSON,不知道为什么它不适合您。使用一个在线JSON格式化程序,例如,允许您粘贴JSON或输入加载JSON的url
file = open('output','r')
output_dict = json.load(file)