2017-11-11 122 views
0

此代碼搜索從googlecustomsearch API和返回數據的查詢JSON格式

import pprint 
import json 

from googleapiclient.discovery import build 


my_api_key = "**************************************" 
my_cse_id = "*************************************" 

def google_search(search_term, api_key, cse_id, **kwargs): 
    service = build("customsearch", "v1", developerKey=api_key) 
    res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute() 
    return res['items'] 


results = google_search(
    'Roshan Patel', my_api_key, my_cse_id, num=10) 
for result in results: 
    pprint.pprint(result) 
    result_dict = json.loads(result) 
    print result_dict['formattedUrl'] 

enter image description here 這是我收到的輸出。 我想只獲得例如:u'formattedUrl'的url部分並將它存儲在一個列表中,怎麼做?如何處理python中的json數據?

新的錯誤 ``` 回溯(最近通話最後一個):

文件 「」,1號線,在 運行文件( 'C:/Users/abc/untitled9.py',WDIR =」 C:/ Users/abc')

運行文件中第880行文件「C:\ Users \ abc \ Anaconda2 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py」 execfile(filename,命名空間)

execfile中的文件「C:\ Users \ abc \ Anaconda2 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py」,第87行 EXEC(編譯(scripttext,文件名, 'EXEC'),水珠,LOC)

文件 「C:/Users/abc/untitled9.py」,第28行,在 result_dict = json.loads(結果)

文件 「C:\用戶\ ABC \ Anaconda2 \ LIB \ json__init __ PY」,線路339,在負載 回報_default_decoder.decode(S)

文件「C:\用戶\ ABC \ Anaconda2 \ LIB \ json \ decoder.py「,第364行解碼爲 obj,end = self.raw_decode(s,idx = _w(s,0).end())

TypeError:期望的字符串或緩衝區 ```

+0

我建立一個小騙子觸覺搜索enigne。 – Shubh

+0

它看起來像'result'不是JSON,而是一個實際的Python字典,所以只需要'print result [u'formattedUrl']'。 –

+0

感謝馬克,它實際上是一本字典 – Shubh

回答

0

你首先需要的結果轉換爲Python對象,像字典,要做到這一點使用json模塊:

result_dict = json.loads(result) 

現在,您可以篩選字典:

result_dict['formattedUrl'] 
+0

我得到這個錯誤.TypeError:預期的字符串或緩衝區 – Shubh

+0

發佈您的新代碼並完成錯誤 – Gui

+0

感謝桂,這是一本字典 – Shubh

0

result不是JSON,但實際的Python字典,所以才:

print result[u'formattedUrl']