我想收集包含以下文字的所有推文: 比特币、以太坊币、莱特币或第纳尔币
但是,我想排除tweets,不能归类为retweet和包含链接的tweets。我从以下网站( https://www.followthehashtag.com/help/hidden twitter search operators extra power followthehashtag )知道我可以添加 -filter:links 以排除包含链接的tweets。通过比较以下搜索词,可以清楚地看到这一点;
https://twitter.com/search?f=tweets&vertical=news&q=bitcoin&src=typd
使用 https://twitter.com/search?f=tweets&q=bitcoin%20过滤器%3alinks&src=typd
同样适用于转发,我可以在其中使用 -filter:retweets (请参见 https://twitter.com/search?f=tweets&q=bitcoin%20 filter%3retweets&src=typd>
我想添加这些标准,以确保减少“噪音”,并且不太可能违反任何API限制。 我写了下面的python脚本:
但是,输出清楚地显示了转发和包含链接的tweet。
问题1:如何在脚本中正确地包含搜索条件并获得正确的输出?
问题2:根据官方文档,流式API最多允许400个跟踪关键字( https://developer.twitter.com/en/docs/tweets/filter realtime/overview/statures filter.html. )。我的两个筛选条件是否分类为2个跟踪关键字?
事先谢谢, https://www.followthehashtag.com/help/hidden-twitter-search-operators-extra-power-followthehashtag )我可以补充一下 -过滤器:链接 排除包含链接的tweet。通过比较以下搜索项,可以清楚地看到这一点;
https://twitter.com/search?f=tweets&vertical=news&q=Bitcoin&src=typd
具有 https://twitter.com/search?f=tweets&q=Bitcoin%20-filter%3Alinks&src=typd
这同样适用于我可以使用的转载 -筛选器:转载 (见 https://twitter.com/search?f=tweets&q=Bitcoin%20-filter%3Aretweets&src=typd )
import sys import time import json import pandas as pd from tweepy import OAuthHandler from tweepy import Stream from tweepy.streaming import StreamListener USER_KEY = '' USER_SECRET = '' ACCESS_TOKEN = '' ACCESS_SECRET = '' crypto_tickers = ['bitcoin', 'ethereum', 'litecoin', 'denarius', '-filter:links', '-filter:retweets'] class StdOutListener(StreamListener): def on_data(self, data): tweet = json.loads(data) print(tweet) def on_error(self, status): if status == 420: sys.stderr.write('Enhance Your Calm; The App Is Being Rate Limited For Making Too Many Requests') return True else: sys.stderr.write('Error {}n'.format(status)) return True if __name__ == "__main__": listener = StdOutListener() auth = OAuthHandler(USER_KEY, USER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) stream = Stream(auth, listener) stream.filter(languages=['en'], track=crypto_tickers)
问题2:根据官方文档,流式API最多允许400个跟踪关键字( https://developer.twitter.com/en/docs/tweets/filter-realtime/overview/statuses-filter.html )我的两个筛选条件是否分类为2个跟踪关键字?
事先谢谢,
A1您不能使用 -filter: 流式API的语法。可用选项的完整列表为 here in the documentation . 您尝试使用的语法特定于REST搜索API,而不是标准的实时过滤器API(请注意,在企业实时Powertrack API中,您 可以 实现您所要求的,但这是一个商业API)。
-filter:
A2您的代码中有6个跟踪关键字,包括 -过滤器: 元素,但这些元素永远不会匹配。
-过滤器: