[Python×株×Twitter] “いいね”の多い株式投資情報のツイートを取得するプログラム

Python
スポンサーリンク

こんにちはーーー

Pythonを使って、株式投資に関するツイートを検索して、csv出力するプログラムを作りました。

“いいね”が多い方が有益な情報が多いかと思い、いいねの数にリミットをかけて検索できるようにしています。

この記事が誰かの役に立てば幸いです。

また、動画もありますので必要に応じてご確認いただければと思います。

スポンサーリンク

プログラム全文

まず最初にプログラム全文を載せておきます。

import tweepy
import csv

def get_api():
    keys = dict(
        screen_name = '*******',                        #自分のアカウント名
        consumer_key = '********',                      #Twitter APIから取得
        consumer_secret = '***********',                #Twitter APIから取得
        access_token =  '***********',                  #Twitter APIから取得
        access_token_secret = '***********',            #Twitter APIから取得
    )

    SCREEN_NAME = keys['screen_name']
    CONSUMER_KEY = keys['consumer_key']
    CONSUMER_SECRET = keys['consumer_secret']
    ACCESS_TOKEN = keys['access_token']
    ACCESS_TOKEN_SECRET = keys['access_token_secret']

    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    api = tweepy.API(auth)
    return api, SCREEN_NAME


def search(api):
    tweet_data = [] #取得したツイートを格納するリスト

    for tweet in api.search(q="株式投資 min_faves:10 min_retweets:0 exclude:retweets",tweet_mode='extended',count=100):
        try:
            tweet_data.append(
                [tweet.id, tweet.user.screen_name,tweet.created_at,tweet.full_text.replace('\n',''),
                tweet.favorite_count, tweet.retweet_count, tweet.user.followers_count, tweet.user.friends_count])
        except Exception as e:
            print(e)

    with open('./search_test.csv', mode='w',newline='',encoding='utf-8-sig') as f:
        writer = csv.writer(f, lineterminator='\n')
        writer.writerow(["id","user","created_at","text","fav","RT","follower","follows"])
        writer.writerows(tweet_data)
    pass

if __name__ == '__main__':
    api, SCREEN_NAME = get_api()
    search(api)

実効結果

↓のように、id、user名、ツイート内容、いいね数、RT数、フォロワー数、フォロー数を転記したcsvを出力することができます。

プログラムの詳細

必要なモジュール

本プログラムに必要なのは、tweepyとcsvになります。

import tweepy
import csv

API取得関数

↓の***の所に自分のアカウントキーを入力する必要があります

def get_api():
    keys = dict(
        screen_name = '*******',                        #自分のアカウント名
        consumer_key = '********',                      #Twitter APIから取得
        consumer_secret = '***********',                #Twitter APIから取得
        access_token =  '***********',                  #Twitter APIから取得
        access_token_secret = '***********',            #Twitter APIから取得
    )

    SCREEN_NAME = keys['screen_name']
    CONSUMER_KEY = keys['consumer_key']
    CONSUMER_SECRET = keys['consumer_secret']
    ACCESS_TOKEN = keys['access_token']
    ACCESS_TOKEN_SECRET = keys['access_token_secret']

    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    api = tweepy.API(auth)
    return api, SCREEN_NAME

検索してCSV出力する関数

for文の箇所でツイートを検索しています。
qに検索したワードと、いいねとRTのリミッターを記載します。
countに検索回数を記載します。

with openでcsvを作成して、上記で検索した結果をcsvに貼り付けます。

def search(api):
    tweet_data = [] #取得したツイートを格納するリスト

    for tweet in api.search(q="株式投資 min_faves:10 min_retweets:0 exclude:retweets",tweet_mode='extended',count=100):
        try:
            tweet_data.append(
                [tweet.id, tweet.user.screen_name,tweet.created_at,tweet.full_text.replace('\n',''),
                tweet.favorite_count, tweet.retweet_count, tweet.user.followers_count, tweet.user.friends_count])
        except Exception as e:
            print(e)

    with open('./search_test.csv', mode='w',newline='',encoding='utf-8-sig') as f:
        writer = csv.writer(f, lineterminator='\n')
        writer.writerow(["id","user","created_at","text","fav","RT","follower","follows"])
        writer.writerows(tweet_data)
    pass

関数の実行

最後にそれぞれの関数を実行すればcsvが出力されます。

if __name__ == '__main__':
    api, SCREEN_NAME = get_api()
    search(api)

以上になります!
ではまた!

コメント

タイトルとURLをコピーしました