【问题标题】:Python client to a paginated HTTP APIPython 客户端到分页 HTTP API
【发布时间】:2016-04-21 01:12:20
【问题描述】:

我正在使用请求来查询分页 API。

这个answer 对我来说已经很不符合pythonic 但我的情况更糟,因为 API 没有最后一页参数,它只有一个最后一个 URL 参数,所以我必须这样做

url = 'http://my_url'
result = request(url)
data = result['datum']
while not result['last_url'] == url:
  url = result['next_page']
  result = request(url)
  data += result['datum']

这似乎不是pythonic,有没有更优雅的方式?

【问题讨论】:

  • 2个空格缩进?
  • 也许你应该把你的问题发到codereview.stackexchange.com
  • 我觉得没问题。我假设result['datum'] 是一个字符串。如果是这样,将数据累积在一个列表中,然后使用.join 将字符串一键连接起来会更有效。
  • @Salva:公平的呼吁,但是当前状态下的这个问题适合 CodeReview。详情请见A guide to Code Review for Stack Overflow users
  • 回答了我自己的问题,我认为这样更好:pastebin.com/nvgQrbaq

标签: python pagination python-requests


【解决方案1】:

我会编写一个生成页面的生成器函数:

def pages(url):
    page = {'last_url': None,
            'next_page': url}
    while page['last_url'] != url:
        url = page['next_page']
        page = request(url)
        yield page

那么你就可以这样使用了:

data = ''.join([page['datum'] for page in pages(url)])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多