首页 > 解决方案 > Twitter API:如何让查询继续运行?

问题描述

新手程序员在这里寻求帮助。

我已经根据我的要求设置了我的代码以使用 Twitter 的高级 API。

SEARCH_TERM = '#AAPL OR #FB OR #KO OR #ABT OR #PEPCO'
PRODUCT = 'fullarchive'
LABEL = 'my_label'
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL), 
                {'query':SEARCH_TERM, 'fromDate':201501010000, 'toDate':201812310000})

但是,当我运行它时,我获得了每次搜索的最大推文数,即 500。我的问题是我应该添加到查询 maxResults = 500 中吗?以及如何使用下一个参数来保持代码运行,直到获得与我的查询对应的所有推文?

标签: python-3.xapidataframetwittertwitterapi-python

解决方案


要将结果从默认值 100 提高到 500,是的,maxResults像这样添加到查询中:

r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL), 
    {
        'query':SEARCH_TERM, 
        'fromDate':201501010000, 'toDate':201812310000,
        'maxResults':500
    })

您可以使用该next参数进行连续查询以获得更多结果。但是,更简单的是,您可以通过使用该类让TwitterAPITwitterPager为您执行此操作。这是一个例子:

from TwitterAPI import TwitterAPI, TwitterPager
SEARCH_TERM = '#AAPL OR #FB OR #KO OR #ABT OR #PEPCO'
PRODUCT = 'fullarchive'
LABEL = 'my_label'
api = TwitterAPI(<consumer key>, 
                 <consumer secret>,
                 <access token key>,
                 <access token secret>)
pager = TwitterPager(api, 'tweets/search/%s/:%s' % (PRODUCT, LABEL), 
    {
        'query':SEARCH_TERM, 
        'fromDate':201501010000, 'toDate':201812310000
    })
for item in pager.get_iterator():
    print(item['text'] if 'text' in item else item)

此示例将继续使用next参数发出连续请求,直到无法下载任何推文。


推荐阅读