迭代分页api响应的生成器
requests-paginator的Python项目详细描述
请求分页器
用于迭代分页api响应的生成器
安装
pip install requests-paginator
用法
用:
实例化RequestsPaginator
- 指向API输出第1页的URL
- 描述如何获取下一页的函数(或lambda)
get_nextpage(page)
:- 返回
None
以停止迭代。 page
是^{} 的一个实例
- 返回
示例:
fromrequests_paginatorimportRequestsPaginatorBASE='https://galaxy.ansible.com'defget_next_page(page):body=page.json()ifbody['next_link']:returnBASE+body['next_link']returnNone# instantiate the paginatorpages=RequestsPaginator(BASE+'/api/v1/categories/?page=1',get_next_page)# iterate over the pagesforpageinpages:print("calling %s"%(page.url))page.raise_for_status()print("found %s results"%(len(page.json()['results'])))
fromrequests_paginatorimportRequestsPaginatordefget_next_page(page):links={}if"Link"inpage.headers:linkHeaders=page.headers["Link"].split(", ")forlinkHeaderinlinkHeaders:(url,rel)=linkHeader.split("; ")url=url[1:-1]rel=rel[5:-1]ifrel=='next':returnurlreturnNone# instantiate the paginatorpages=RequestsPaginator('https://api.github.com/users/github/repos?page=1',get_next_page)# iterate over the pagesforpageinpages:print("calling %s"%(page.url))page.raise_for_status()print("found %s results"%(len(page.json())))