2013-07-21 141 views
7

我在玩天使列表(AL)API并且想要在San San Francisco拉出所有工作。 因为我无法找到api的活动Python包装器(如果我有任何进展,我想我会自己创建),我正在使用请求库。Python请求参数/处理api分页

AL API的结果是分页的,我无法弄清楚如何移出结果的第一页。

这里是我的代码:

import requests 
r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs").json() 
r_sanfran.keys() 
# returns [u'per_page', u'last_page', u'total', u'jobs', u'page'] 
r_sanfran['last_page'] 
#returns 16 
r_sanfran['page'] 
# returns 1 

我尝试添加参数requests.get,但没有奏效。我也尝试了一些非常愚蠢的东西 - 改变'页面'键的价值,就像我神奇般地分页一样。

例如。 r_sanfran['page'] = 2

我猜这是相对简单的事情,但我似乎无法弄清楚,所以任何帮助都会很棒。

一如既往的感谢。

Angel List API documentation如果它有帮助。

回答

12

阅读last_page,并在该范围内的每一页的GET请求:

import requests 

r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs").json() 
num_pages = r_sanfran['last_page'] 

for page in range(2, num_pages + 1): 
    r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs", params={'page': page}).json() 
    print r_sanfran['page'] 
    # TODO: extract the data 
+2

我猜应该是'范围(2,NUM_PAGES + 1)'因为第一页是1,和16是页面的总数,所以会希望包含在范围内......(并且可能希望使用'requests.get('http:// ... blah ...?',params = {'page' :page})'以避免字符串插值 –

+0

啊。我没有看到我可以在requests.get – crock1255

+0

中传递params参数啊,好吧,我知道发生了什么,我在想这个分页来自天使。 co/1 ... angel.co/2等 感谢您的帮助! – crock1255