我组装了一个小型 Twitter 工具来提取相关推文,以便稍后在潜在语义分析中进行分析。讽刺的是,这一点(更复杂的一点)工作得很好——问题在于拉动推文。我正在使用下面的代码来设置它。
这在技术上是有效的,但没有达到预期 - 我认为 .items(200) 参数会为每个请求提取 200 条推文,但它被分成 15 个推文 block (因此 200 个项目“花费”了我 13 个请求) - 我了解这是原始/默认 RPP 变量(现在 Twitter 文档中的“计数”),但我已经在光标设置中尝试过(rpp=100,这是 Twitter 文档中的最大值),并且它不会差异。
Tweepy/Cursor docs
The other nearest similar question isn't quite the same issue
感谢您的任何想法!我确信这是对设置的一个小调整,但我已经尝试了页面和 rpp 上的各种设置,但无济于事。
auth = tweepy.OAuthHandler(apikey, apisecret)
auth.set_access_token(access_token, access_token_secret_var)
from tools import read_user, read_tweet
from auth import basic
api = tweepy.API(auth)
current_results = []
from tweepy import Cursor
for tweet in Cursor(api.search,
q=search_string,
result_type="recent",
include_entities=True,
lang="en").items(200):
current_user, created = read_user(tweet.author)
current_tweet, created = read_tweet(tweet, current_user)
current_results.append(tweet)
print current_results
最佳答案
在同事的帮助下,我最终解决了这个问题。事实上,rpp 和 items() 调用是在实际的 API 调用之后进行的。 Twitter documentation 中的“计数”选项如上所述,它以前是 RPP,并且在 Tweepy 2.3.0 中仍然被标记为 rpp,这似乎是这里的问题。
我最终做的是修改 Tweepy 代码 - 在 api.py 中,我将“count”添加到搜索绑定(bind)部分(在我的安装中的 L643 左右,ymmv)。
""" search """
search = bind_api(
path = '/search/tweets.json',
payload_type = 'search_results',
allowed_param = ['q', 'count', 'lang', 'locale', 'since_id', 'geocode', 'max_id', 'since', 'until', 'result_type', **'count**', 'include_entities', 'from', 'to', 'source']
)
这使我能够将上面的代码调整为:
for tweet in Cursor(api.search,
q=search_string,
count=100,
result_type="recent",
include_entities=True,
lang="en").items(200):
这会导致两次调用,而不是十五次;我已经用
仔细检查了这一点print api.rate_limit_status()["resources"]
每次调用后,每次只会将我剩余的搜索量减少 2 次。
关于django - Tweepy 速率限制/分页问题。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473393/