【翻译】Tweepy 3.5.0 Doc (4) Cursor Tutorial

Cursor教程

此教程详细阐述了如何用Cursor对象进行与分页有关的操作。


简介

分页在 Twitter API 的开发中有着广泛的运用,如对时间线,用户列表,私信的迭代等等。为了实现分页的操作,我们必须为每一个request提供一个页面/指针(page/cursor)参数。但是单为了处理分页的循环实际上就需要很多样板代码(boiler plate code),所以Tweepy中Cursor对象的出现就是为了让分页操作更简单,代码更高效。


传统方法 vs Cursor方法

首先我们来解释一下如何迭代授权用户的时间线。下面是在Cursor对象引入前的老办法:

page = 1
while True:
    statuses = api.user_timeline(page=page)
    if statuses:
        for status in statuses:
            # process status here
            process_status(status)
    else:
        # All done
        break
    page += 1  # next page

正如代码中所写,我们必须手动在分析分页的循环中处理 ‘页码’ 参数。现在我们再给出使用Cursor对象的版本:

for status in tweepy.Cursor(api.user_timeline).items():
    # process status here
    process_status(status)

现在代码是不是看起来好多了?Cursor在后台处理了所有有关分页的操作,所以我们需要关心对分页有什么具体的处理就可以了。


向API方法中传递参数

如果我们想往API方法中传递参数该怎么做呢?

api.user_timeline(id="twitter")
由于我们是把API方法当做Cursor的参数进行传递,所以方法本身的参数就不能像调用方法时那样传送。取而代之的是将其作为Cursor的参数进行传递:
tweepy.Cursor(api.user_timeline, id="twitter")
现在,当发送请求时,Cursor会把参数传递到方法中了。


Items 和 Pages

到目前为止我们只说明了如何对item进行迭代,那么如果要直接处理每张分页的结果该怎么做呢?答案是用pages()方法:

for page in tweepy.Cursor(api.user_timeline).pages():
    # page is a list of statuses
    process_page(page)


限制

如果我们只想要前n个item或分页该怎么做呢?方法很简单,就是将数量上限作为参数传递到items()或pages()方法中。

# Only iterate through the first 200 statuses
for status in tweepy.Cursor(api.user_timeline).items(200):
    process_status(status)

# Only iterate through the first 3 pages
for page in tweepy.Cursor(api.user_timeline).pages(3):
    process_page(page)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值