使用Twitter流媒体API提取旧推文



我的目的是使用Python为纽约市('-74,40,-73,41')提取整个2017年1月的旧推文。我可以使用以下代码获得实时流推文:

    import json
    import pandas as pd
    import numpy as np
    from TwitterAPI import TwitterAPI
    #Set up the variables for the 'application'
    consumerkey = 'cfKguErYawo2WB7cfNtAT2lKl'
    consumersecret = 'my_consumer_secret'
    access_token_key = '2195434704-Wov69oF2iIBRgUjWJhD0KThqcLApYCJXqtbYI4K'
    access_token_secret = 'my_access_token_secret'
    #Setup the API key
    api = TwitterAPI(consumerkey,consumersecret,access_token_key,access_token_secret)
    # Breaking after extracting 10 live tweets from New York City
    r = api.request('statuses/filter', {'locations':'-74,40,-73,41'})
    for row,item in enumerate(r):
        print(row, item['text'])
        if row >= 10:
            break

,但这不是我想要的。有人可以建议如何使用Twitter流API或Python中的任何其他软件包提取此位置过滤器的旧推文吗?谢谢!

您可以使用Twitter的REST API来完成您要求的部分内容。以下是一个使用您过去与之流式传输的Twitterapi软件包的示例。但是,当您搜索旧推文时,会有一些限制。您只能获得大约一周的旧推文。另外,无论您是否提供位置,您都必须必须提供搜索字符串(带有q参数)。您只会看到与字符串和位置既匹配的结果。流式传输时,可以提供过滤器字符串或位置或两者兼而有之。在这种情况下,结果可以匹配字符串或位置,但不一定两者都与。

此代码将下载推文,直到达到大约一周的限制为止。它通过提出定时的连续请求来实现这一目标,以免超过Twitter的利率限制。您可能还会发现TwitterGeopics软件包有用。

from TwitterAPI import TwitterAPI, TwitterRestPager
SEARCH_TERM = 'pizza'
GEOCODE = '40,74,10km'
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN_KEY = ''
ACCESS_TOKEN_SECRET = ''
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
pager = TwitterRestPager(api, 'search/tweets', {'q': SEARCH_TERM, 'geocode':GEOCODE})
for item in pager.get_iterator():
    print(item['text'] if 'text' in item else item)

现在,您无法使用Twitter的流API提取30天大的推文。Twitter已将其付款。

您可以使用Twitter Premium API的搜索30天订阅计划提取过去30天的推文。

此外,只有在您批准了Twitter的开发人员帐户的情况下,才可以购买Twitter Premium订阅。

要获得批准,您可以看到此链接:https://developer.twitter.com/en/apply-for-access.html

如果您有一次性要求,那么我建议您使用trackmyhashtag.com或Tweetreach.com等第三方服务

最新更新