Help us understand the problem. What is going on with this article?

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

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

■改善点

■参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away