我正在通过如下所示的rest API调用使用Python获取数据...
result = json.load(urllib2.urlopen("https://api.somesite.com/v0/someLink?api_key=aaabbbccc"))
API内置了100个最大结果,因此我必须在python中进行分页。
进行第一次调用后, result.nextPage 返回一个代码,然后我必须将该代码传递给下一个API调用,例如...
result2 = json.load(urllib2.urlopen("https://api.somesite.com/v0/someLink?api_key=aaabbbccc&nextPage=someCode"))
依次类推,直到浏览完所有页面为止。
python是否有任何内置机制来处理这种分页?
我本人可以编写一个笨拙的循环,但不确定
以最优雅的方式欣赏所有想法。
答案 0 :(得分:1)
python是否有任何内置机制来处理这种分页?
否。
如果没有更多页面要加载,请使用while True:
语句编写一个break
循环。
如何处理等待每个页面的时间,以便我可以继续下一个呼叫
urllib2.urlopen
不是异步的。您的代码将被阻止(即等待),直到请求完成。
如何处理“无更多页面”事件而不会出错
这取决于您使用的API。我希望result.nextPage
为空/未在最后一页上设置
在进行所有调用后如何将所有调用的结果合并为1个变量
将它们添加到列表中。伪代码:
url = "initial URL"
results = []
while True:
current_page = request(url)
results.append(current_page)
if (another page available):
url = "new url with next page code"
else:
break
我衷心建议您使用the requests
module而不是简陋的urllib2.urlopen
。