python – 如何使用Twython从twitter搜索或流式api获取超过100条推文
作者:互联网
我怎样才能使用Twython来检索所有提到例如“#Accounting”的推文?
我使用了Twitter搜索API,但我只能获得100条推文.
然后我尝试使用Twitter流式过滤器API,但无法通过地理位置缩小,它似乎需要永远.我读到我们应该将所有推文放入数据库然后在那里进行聚合,但我想知道是否有其他方法可以快速做一些事情.
这是我的代码:
from twython import Twython
TWITTER_APP_KEY = 'XXXX'
TWITTER_APP_KEY_SECRET = 'XXXX'
TWITTER_ACCESS_TOKEN = 'XXXX'
TWITTER_ACCESS_TOKEN_SECRET = 'XXXX'
t = Twython(app_key=TWITTER_APP_KEY,
app_secret=TWITTER_APP_KEY_SECRET,
oauth_token=TWITTER_ACCESS_TOKEN,
oauth_token_secret=TWITTER_ACCESS_TOKEN_SECRET)
search = t.search(q='#Accounting',
geocode='-74,40,-73,41',
since_id='1',
max_id='504082008759488512'
)
tweets = search['statuses']
count=0
for tweet in tweets:
count+=1
print tweet['id_str'], '\n', tweet['text'], '\n\n\n'
print count
这是我的Streaming API代码:
from twython import TwythonStreamer
APP_KEY = 'XXXX'
APP_SECRET = 'XXXX'
OAUTH_TOKEN = 'XXXX'
OAUTH_TOKEN_SECRET = 'XXXX'
class MyStreamer(TwythonStreamer):
tweets=[]
def on_success(self, data):
if 'text' in data:
tweet= data['text'].encode('utf-8')
if 'Accounting' in tweet:
tweets.append(tweet)
print tweet
def on_error(self, status_code, data):
print status_code
self.disconnect()
stream = MyStreamer(APP_KEY, APP_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
stream.statuses.filter(location=['-74,40,-73,41'])
谢谢
解决方法:
您一次只能查询100个,但您可以说明查询应从哪个ID开始(或者大于或小于).
所以你要做的就是运行你的前100个,然后寻找最低的ID并运行另一个查询,这次将该ID(少于1)设置为你的最大ID.这将返回下一个100,您将其追加到之前的结果中.
然后,您可以根据Twitter速率限制多次运行此循环.
如果要获取最新的推文,则应将t.setMaxId()或t.setSinceId()设置为分别低于或高于当前最低/最高ID.
标签:python,twitter,twython 来源: https://codeday.me/bug/20190728/1562564.html