0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tweepyを使ったtwitterデータ取得2

Posted at

twitterからデータ取得やってみる

■背景・目的

  • 背景

    • 前回はストリームデータ取得して終わったので、今回は他のデータを取得してみる
  • 目的

    • まずはtweepyで実装して、以下を明らかにしたい
      • twitterのAPIを使って取得したデータはどのような形式か
      • twitterのAPIを使って得られるデータはどのようなものがあるか←今ここ
      • API取得したデータの前処理方法
      • 加工データを使ったデータ分析

■コード

twitter_api2




from tweepy import API
from tweepy import Cursor
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream


import get_data.twitter_credentials as credentials


#ツイッタークライアント 
class TwitterClient():
    def __init__(self,twitter_user=None):
        #認証
        self.auth=TwitterAuthenticator().authenticate_twitter_app()
        #APIクライアント これが重要
        self.twitter_client=API(self.auth)
        #ユーザの指定
        self.twitter_user=twitter_user


    def get_user_timeline_tweets(self,num_tweets):
        tweets=[]
        #APIクライアントのユーザタイムラインをcursorオブジェクトにして、ページネーション処理
        for tweet in Cursor(self.twitter_client.user_timeline,id=self.twitter_user).items(num_tweets):
            tweets.append(tweet)
        return tweets


    def get_friend_list(self,num_friends):
        friend_list=[]
        for friend in Cursor(self.twitter_client.friends,id=self.twitter_user).items(num_friends):
            friend_list.append(friend)


        return friend_list


    def get_home_timeline_tweets(self,num_tweets):
        home_timeline_tweets=[]
        for tweet in Cursor(self.twitter_client.home_timeline,id=self.twitter_user).items(num_tweets):
            home_timeline_tweets.append(tweet)
        return home_timeline_tweets


#ツイッター認証


class TwitterAuthenticator():


    def authenticate_twitter_app(self):
        auth=OAuthHandler(credentials.consumer_key,credentials.consumer_secret)
        auth.set_access_token(credentials.Access_token,credentials.Access_secret)
        return auth


#ツイッターストリーミング


class TwitterStreamer():


    def __init__(self):
        self.twitter_authenticator=TwitterAuthenticator()


        def stream_tweets(self,fetched_tweets_filename,hash_tag_list):
            listener=TwitterListener(fetched_tweets_filename)
            auth=self.twitter_authenticator.authenticate_twitter_app()
            stream=Stream(auth,listener)


            stream.filter(track=hash_tag_list)


#ツイッターリスナー


class TwitterListener(StreamListener):


    def __init__(self,fetched_tweets_filename):
        self.fetched_tweet_filename=fetched_tweets_filename


    def on_data(self, raw_data):
        try:
            print(data)
            with open(self.fetched_tweet_filename,'a') as tf:
                tf.write(data)
            return True
        except BaseException as e:
            print("Error on_data %s" % str(e))
        return True


    def on_error(self, status):
        if status==420:
            return False
        print(status)




if __name__ == '__main__':


    twitter_client=TwitterClient('realDonaldTrump')
    print(twitter_client.get_user_timeline_tweets(1))
    print(twitter_client.get_home_timeline_tweets(10))
    print(twitter_client.get_friend_list(10))


# APIオブジェクトの他メソッドを使いたい場合→https://kurozumi.github.io/tweepy/api.html#tweepy-api-twitter-api-wrapper
 

■わかったこと

-s APIオブジェクトの機能を使うと、友達リストやホームタイームラインのツイート、特定ユーザのタイムラインツイートなど取得できる
-k Cursorオブジェクトを使うと、ページネーションを効率よく処理できる

■疑問、課題点

- APIオブジェクトのメソッドを使えば、もっといろいろなことができそうなので、今後も実験する必要あり

■改善点

■参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?