2013-03-17 50 views
1

我可以使用Python的JSON庫並從該地址Twitter搜索API,巨蟒和JSON解析問題

http://search.twitter.com/search.json?q=%23damn&result_type=recent&rpp=1&filter:retweets 

和大部分的時間用

j =json.loads(urllib.urlopen('http://search.twitter.com/search.json?q=%23damn&result_type=recent&rpp=1&filter:retweets').read()) 

text = j['results'][0]['text'] 
id = j['results'][0]['id'] 

我可以提取文本中提取信息和結果中的ID並印刷它們。 我每15秒請求JSON,所以我不會被Twitter的限制阻止。

每隔一段時間我都會遇到這個問題。

{u'completed_in': 0.021, 
u'max_id': 313306991827238912L, 
u'max_id_str': u'313306991827238912', 
u'next_page': u'?page=2&max_id=313306991827238912&q=%23damn&rpp=1&result_type=recent', 
u'page': 1, 
u'query': u'%23damn', 
u'refresh_url': u'?since_id=313306991827238912&q=%23damn&result_type=recent', 
u'results': [], 
u'results_per_page': 1, 
u'since_id': 0, 
u'since_id_str': u'0'} 

似乎沒有任何內容包含在結果字段中。 這會導致以下錯誤。

Traceback (most recent call last): 
    File "C:\Users\Home\Desktop\test.py", line 32, in <module> 
    text = j['results'][0]['text'] 
IndexError: list index out of range 

然後關閉Python命令行。 我已經考慮過放置一個'while'循環來確保結果字段在處理之前已滿,但是我覺得這可能會發送到很多請求並且將腳本鎖定在twitter之外。

您是否遇到過這個問題?你知道如何克服它嗎?

+0

爲什麼不是簡單地做'如果j ['results']:'? – 2013-03-17 15:32:16

+0

爲什麼不等一段時間,如果結果字段爲空?退房http://stackoverflow.com/questions/4152969/genrate-timer-in-python – 2013-03-17 15:34:39

+0

我現在就試一試。有時需要一兩個小時纔會出現一個詭計結果。 – Hooperstu 2013-03-17 15:39:54

回答

0

我要麼在if語句拋出調用的結果或嘗試之前,我已經在我的時間使用Web API,可結果並不總是可靠的,最好是在安全方面注意到