猿问

循环访问 API 请求以记录值

我正在使用一个对请求结果进行分页的 API,该 API 还方便地生成一些包含分页信息的“超媒体”值;这些值之一是'next_page'。


我正在尝试创建一个接受请求的循环,记录此“next_page”值,然后使用“next_page”的值运行另一个请求,并记录下一页,依此类推,直到“next_page”的值=“无”。


到目前为止,这是我的功能,但这只是填充列表中的一项,而应该有 3 项。


pages = []

def build_requests(request):

    request = 'https://api.performancehorizon.com'+request

    job = requests.get(request, headers=headers, params=params)

    req = job.json()


    hypermedia_np = req['hypermedia']['pagination']['next_page']


    if hypermedia_np != 'None':

        next_page = req['hypermedia']['pagination']['next_page']

        pages.append(next_page)

        job = requests.get('https://api.performancehorizon.com'+next_page, headers=headers, params=params)

        req = job.json()

    else: print("Done!")

如何更改我的代码以循环此作业,直到“next_page”的值为“None”?


皈依舞
浏览 146回答 1
1回答

宝慕林4294392

您可以使用以下修改后的代码pages = []def build_requests(request):    request = 'https://api.performancehorizon.com' + request    job = requests.get(request, headers=headers, params=params)    req = job.json()    hypermedia_np = req['hypermedia']['pagination']['next_page']    while hypermedia_np is not None or hypermedia_np != 'None':        next_page = req['hypermedia']['pagination']['next_page']        if next_page is not None or next_page != 'None':            pages.append(next_page)            job = requests.get('https://api.performancehorizon.com' + next_page, headers=headers, params=params)            req = job.json()            hypermedia_np = req['hypermedia']['pagination']['next_page']        else:            hypermedia_np = None    print("Done!")或者您可以使用此简化版本,这也适用于您的情况pages = []def build_requests(request):    request = 'https://api.performancehorizon.com' + request    job = requests.get(request, headers=headers, params=params)    req = job.json()    hypermedia_np = req['hypermedia']['pagination']['next_page']    while hypermedia_np is not None or hypermedia_np != 'None':        pages.append(hypermedia_np)        job = requests.get('https://api.performancehorizon.com' + hypermedia_np, headers=headers, params=params)        req = job.json()        hypermedia_np = req['hypermedia']['pagination']['next_page']    print("Done!")
随时随地看视频慕课网APP

相关分类

Python
我要回答