Python 如何对具有多个页面的API进行爬网

Python 如何对具有多个页面的API进行爬网,python,json,api,generator,Python,Json,Api,Generator,我有一个包含一些JSON的API的url: { "posts": [ ... ], "page": { ... }, "next": "/posts.json?page=2" } 其中/posts.json?page=2具有不同的页码,如果没有更多的页面,则可能为null 在Python中,如何创建一个输出所有页面和所有帖子的函数 我想我得做点什么 def get_posts(url, posts=[]): json = request(url).json() posts

我有一个包含一些JSON的API的url:

{
  "posts": [ ... ],
  "page": { ... },
  "next": "/posts.json?page=2"
}
其中
/posts.json?page=2
具有不同的页码,如果没有更多的页面,则可能为
null

在Python中,如何创建一个输出所有页面和所有帖子的函数

我想我得做点什么

def get_posts(url, posts=[]):
  json = request(url).json()

  posts.append(json.posts)

  while json.next_page:
    return get_posts(json.next_page, posts)
但我想我可以用
收益率
做点什么

def get_posts(url, posts=None):
  # initialize the posts lists
  posts = [] if posts is None else posts

  # make the request and convert to json
  json = request(url).json()

  # extends the posts array with the returned posts
  posts.extend(json['posts'])

  # if there is a next_page, call the function recursively
  if json.next_page:
    return get_posts(json.next_page, posts)

  # if there isn't a next_page, return the posts
  return posts