Twitterのデータを取得する必要があったのでTwitter APIを利用して取得しました。Twitter社はスクレイピングを禁止しているので、データを取得する場合は公式のAPIを利用する必要があります。
Twitterの事前の承諾なしに本サービスのスクレイピングを行うことは明示的に禁じられています)
Twitter Developerへの登録
適度に入力します。入力内容に100文字以上必須とかあり、微妙に大変ですが、インターナルな利用では大方、許可はおりると思います。
Keys、tokens、Access token & access token secretの登録
アプリの作成は行いませんが、キーを取得するのにアプリ登録が必要です。ここも入力項目があります。
TweepyでTwitter APIを利用
TweepyというTwitter APIに簡単にアクセスできるライブラリーを利用します。
Hello Tweepy
はじめは公式のドキュメントのコードをそのまま実行してみました。これはTimelineメソッドを利用して、自分のツイートを取得するAPIです。
フォロワーとそのフォロワーの友人が投稿したretweetsを含む最新の20個のツイートを返します。これはWeb上の/timeline/homeに相当します。
import tweepy
# OAuth認証情報のセット
consumer_key="hogehoge"
consumer_secret="hogehoge"
access_token="hogehoge"
access_token_secret="hogehoge"
# OAuth認証
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# Timelineメソッド、stringで返却される
public_tweets = api.home_timeline()
for tweet in public_tweets:
print(tweet.text)
Twitterのアカウントの情報を取得する
Hello Tweepyが無事にできたので目的のTwitterデータの収集をやってみます。まずは、自分のアカウントのフォロー数とフォロワー数等々を取得してみます。
定期的にとって推移をみたい場合は取得日時を入れると良いですね。
import tweepy
import pandas as pd
consumer_key="hogehoge"
consumer_secret="hogehoge"
access_token="hogehoge"
access_token_secret="hogehoge"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
tweet_user = []
user=api.get_user(screen_name = "@hatosuke3")
tweet_user.append([user.id,user.screen_name,user.description,user.statuses_count,user.friends_count,user.followers_count,user.favourites_count,user.listed_count])
df = pd.DataFrame(tweet_user, columns=['id', 'screen_name', 'description','statuses_count','friends_count','followers_count','favourites_count','listed_count'])
df
ツイートの情報を取得する
次にツイートの傾向をチェックするために、ツイートごとの時間、ツイート内容、ライク数、リツイート数を取得してみます。
Twitter APIにはエンタープライズ版があります!インプレッション数、エンゲージメント数をチェックするにはエンタープライズ版のEngagement APIを利用する必要があるので今回は諦めました。Twitterを活用しているマーケティングの人はエンタープライズ使いたいですよね。
import tweepy
import pandas as pd
consumer_key="hogehoge"
consumer_secret="hogehoge"
access_token="hogehoge"
access_token_secret="hogehoge"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
tweet_data = []
for tweet in tweepy.Cursor(api.user_timeline,screen_name = "@hatosuke3", count=1).items():
tweet_data.append([tweet.id,tweet.created_at,tweet.text.replace('\n',''),tweet.favorite_count,tweet.retweet_count])
df = pd.DataFrame(tweet_data, columns=['id', 'created_at', 'text','favorite_count','retweet_count'])
# リツイートを除く
df[~df['text'].str.contains('RT @')]
コメント