将Google Ajax搜索转换为python词典
我试图编写一个脚本,获取谷歌的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
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)