我正在使用Tweepy API来提取Twitter Feed。我想只提取特定语言的所有Twitter提要。语言过滤器仅在提供track
过滤器时有效。以下代码返回406错误:
l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
stream.filter(languages=["en"])
如何使用Tweepy从特定语言中提取所有推文?
答案 0 :(得分:21)
你不能(没有特殊访问权限)。流式传输全部推文(未经过滤)需要与the firehose的连接,该连接仅在Twitter的特定用例中授予。老实说,firehose并不是必需的 - 正确使用track
可以获得比你知道如何处理更多的推文。
尝试使用以下内容:
stream.filter(languages=["en"], track=["a", "the", "i", "you", "u"]) # etc
通过这样的单词过滤会得到很多很多推文。如果您想获得最常用单词的真实数据,请查看时间:The 500 Most Frequently Used Words on Twitter中的这篇文章。您可以使用up to 400个关键字,但这可能会在给定的时间间隔内达到推文的1%限制。如果您的track
参数在给定时间与所有推文的60%匹配,您仍然只会得到1%(这是很多推文)。
答案 1 :(得分:4)
除了直接获取过滤后的推文外,您还可以通过以下方式获取所有不同语言的推文后对其进行过滤:
tweets = api.search("python")
for tweet in tweets:
if tweet.lang == "en":
print(tweet.text)
#Do the stuff here
希望它有所帮助。
答案 2 :(得分:2)
在lang='en'
中尝试Cursor()
param,例如
tweepy.Cursor(.. lang='en')
答案 3 :(得分:0)
您可以在github代码https://github.com/tweepy/tweepy/blob/master/tweepy/streaming.py
中看到track方法的参数。将语言放入ISO_639-1_codes数组中。
它们是:
filter(self, follow=None, track=None, is_async=False, locations=None,
stall_warnings=False, languages=None, encoding='utf8', filter_level=None):
要按语言进行跟踪,只需输入:
class Listener(StreamListener):
def on_data(self, data):
j = json.loads(data)
t = {
'screenName' : j['user']['screen_name'],
'text:': j['text']
}
print(t)
return(True)
def on_status(self, status):
print(status.text)
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth=auth, listener=Listener(),wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
stream.filter(track=['Trump'],languages=["en","fr","es"])
答案 4 :(得分:0)
这对我有用。
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
a=input("Enter Tag: ")
tweets = api.search(a, count=200)
a=[]
for tweet in tweets:
if tweet.lang == "en":
a.append(tweet.text)
答案 5 :(得分:0)
Tweepy search允许获取特定语言的推文。您可以使用ISO 639-1代码来指定language参数的值。 以下代码将获取带有指定语言全文的推文(以下示例为英语)
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
tweets = api.search(q = keywordtosearch, lang = 'en', count = 100, truncated = False, tweet_mode = 'extended')
for tweet in tweets:
print(tweet.full_text)
#add your code
答案 6 :(得分:0)
借助GetOldTweets3(https://pypi.org/project/GetOldTweets3/),您可以通过过滤一些条件来下载tweet(甚至是旧的tweet),如下所示:
tweetCriteria = got.manager.TweetCriteria().setQuerySearch('Coronavirus')\
.setSince("2020-02-15")\
.setUntil("2020-03-29")\
.setMaxTweets(5)\
.setNear('India')\
.setLang('en')
tweets = got.manager.TweetManager.getTweets(tweetCriteria)
for tweet in tweets:
print(tweet.text)
print(tweet.date)
print(tweet.geo)
print(tweet.id)
print(tweet.permalink)
print(tweet.username)
print(tweet.retweets)
print(tweet.favorites)
print(tweet.mentions)
print(tweet.hashtags)
print('*'*50)