Twitterフィードの抽出にTweepy APIを使用しています。特定の言語のすべての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を使用して特定の言語からallツイートを抽出するにはどうすればよいですか?
(特別なアクセスなしでは)できません。ストリーミングallツイート(フィルタリングなし)には firehose への接続が必要です。これはTwitterによって特定のユースケースでのみ許可されます。正直なところ、ファイアホースは実際には必要ありません。 track
を適切に使用すると、処理方法がわからないほど多くのツイートを取得できます。
次のようなものを使用してみてください。
stream.filter(languages=["en"], track=["a", "the", "i", "you", "u"]) # etc
そのような単語でフィルタリングすると、非常に多くのツイートが得られます。最も頻繁に使用される単語の実際のデータが必要な場合は、Timeのこの記事をご覧ください。 Twitterで最も頻繁に使用される500個の単語 。 最大4 キーワードを使用できますが、特定の時間間隔で1%のツイート制限に近づく可能性があります。 track
パラメーターが特定の時間にすべてのツイートの60%に一致する場合でも、1%のみを取得します(これは多くのツイートです)。
フィルタリングされたツイートを直接取得する以外に、異なる言語のすべてのツイートを取得した後にフィルタリングすることができます:
tweets = api.search("python")
for Tweet in tweets:
if Tweet.lang == "en":
print(Tweet.text)
#Do the stuff here
それが役に立てば幸い。
Cursor()
の_lang='en'
_ paramを試してください。
tweepy.Cursor(.. lang='en')
これは私のために働いた。
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)
Githubコードでtrackメソッドの引数を確認できます https://github.com/tweepy/tweepy/blob/master/tweepy/streaming.py
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"])