通过API搜索Feed的不一致结果

时间:2013-07-13 11:44:47

标签: search feeds xively

我希望在地球地图中显示来自用户'airqualityegg'的所有Feed。为了做到这一点,我用Python编写了以下脚本(如果你要自己尝试,在你使用的文本编辑器中正确缩进代码):

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个页面的调用,因为此用户发布的Feed总数为684(正如您在浏览器中直接写“https://api.xively.com/v2/feeds?user=airqualityegg”时所看到的那样)

运行此脚本产生的csv文件确实存在重复的行,可能会解释为每次调用页面时结果的顺序不同。因此,相同的行可以包括在不同调用的结果中。出于这个原因,我得到的结果不那么独特。

您知道为什么包含在不同页面中的结果不是唯一的吗?

谢谢, 玛丽亚

1 个答案:

答案 0 :(得分:0)

你可以尝试传球 order=created_at(见docs)。

问题是因为默认情况下order=updated_at,因此每个页面上的搜索结果可能会有所不同。

您还应该考虑使用官方Python库。