2013-07-13 71 views
1

我想在地圖中顯示來自用戶'airqualityegg'的所有提要。爲了做到這一點,我寫了下面的腳本與Python(如果你是要去嘗試自己,縮進正確的在您使用文本編輯器代碼):來自Feed的不相關結果通過API搜索

import json 
import urllib 
import csv 

list=[] 

for page in range(7): 
    url = 'https://api.xively.com/v2/feeds?user=airqualityegg&per_page=100page='+str(page) 
    rawData=urllib.urlopen(url) 

    #Loads the data in json format 
    dataJson = json.load(rawData) 
    print dataJson['totalResults'] 
    print dataJson['itemsPerPage'] 

    for entry in dataJson['results']: 

     try: 
      list2=[] 
      list2.append(entry['id']) 
      list2.append(entry['creator']) 
      list2.append(entry['status']) 
      list2.append(entry['location']['lat']) 
      list2.append(entry['location']['lon']) 
      list2.append(entry['created']) 
      list.append(list2) 

     except: 

      print 'failed to scrape a row' 

def escribir(): 
    abrir = open('all_users2_andy.csv', 'w') 
    wr = csv.writer(abrir, quoting=csv.QUOTE_ALL) 
    headers = ['id','creator', 'status','lat', 'lon', 'created'] 
    wr.writerow (headers) 

    for item in list: 
     row=[item[0], item[1], item[2], item[3], item[4], item[5]] 
     wr.writerow(row) 
     abrir.close() 

escribir() 

我已經包含了7頁,因爲總通話此用戶發佈的訂閱源的數量爲684(如直接在瀏覽器'https://api.xively.com/v2/feeds?user=airqualityegg'中直接書寫時看到的那樣)

運行此腳本導致的csv文件確實存在重複的行,每次呼叫一個頁面時,結果順序都會有所不同。因此,不同調用的結果中可以包含同一行。出於這個原因,我得到了更少的獨特結果,我應該。

你知道爲什麼可能是因爲包含在不同頁面中的結果不是唯一的嗎?

感謝, 瑪麗亞

回答

0

您可以嘗試通過 order=created_at(見docs)。

問題是因爲默認order=updated_at,因此結果在每個頁面上顯示的機會可能不同。

你還應該考慮使用官方的Python庫。