pythonでTwitterに書き込まれている口コミを取得しようと考えています。
ネットに落ちているカキコミを参考に自身で作ってみましたが、「error:401」が
返ってきます。(調べましたが何かが認証されていないとのことでした)
個人的に
「API用のURLを設定」の部分が間違っているのかといろいろいじってみましたが
さすがに効率が悪いので聞いている次第です。
お手数ですがどなたか教えていただけましたら幸いです。
参考にしたwebサイト
https://gaaaon.jp/blog/twitterapi
python
1import json 2from requests_oauthlib import OAuth1Session 3 4#取得した認証キーを設定 5CONSUMER_KEY = "xxxxxxxxxxxxxxxxxxesfmw" 6CONSUMER_SECRET = "xxxxxxxxxxxxxxxxxxxxxwqzIYIKsg41BCkzq8oRm87v70QPBnqdQ1xwb4W" 7ACCESS_TOKEN = "xxxxxxxxxxxbBV0GoO2u7ghbw9Jjh1JiqEVksj" 8ACCESS_SECRET = "xxxxxxxxxx3tW2H8l9dKl8hGmaTi6kiPqhcSTlj" 9 10twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET) 11 12#API用のURLを設定(●にはデベロッパー管理画面のDev environment labelを入力) 13url = "https://api.twitter.com/2/tweets/search/recent?query=from:TwitterDev" 14 15#paramsに検索ワードや件数、日付などを入力 16params = {'query' : 'Twitter API', #検索したいワード 17 "maxResults" : "100"} #取得件数 18 19#上記で設定したパラメーターをget関数を使い指定URLから取得 20res = twitter.get(url, params = params) 21 22 23#ステータスコードが正常値(200)だった場合の処理 24if res.status_code == 200: 25 26 #後でpandasで処理するためリスト化 27 created_at = [] 28 text = [] 29 retweet_count = [] 30 favorite_count = [] 31 32 name = [] 33 followers_count = [] 34 friends_count = [] 35 statuses_count = [] 36 37 #100件を超えるデータ用に繰り返し処理で対応 38 while True: 39 res = twitter.get(url, params = params) 40 tweets = json.loads(res.text) 41 tweet_list = tweets["results"] 42 43 for tweet in tweet_list: 44 created_at.append(tweet["created_at"]) #投稿日時 45 text.append(tweet["text"]) #投稿本文 46 retweet_count.append(tweet["retweet_count"]) #リツイート数 47 favorite_count.append(tweet["favorite_count"]) #いいね数 48 user = tweet["user"] 49 name.append(user["name"]) #名前 50 followers_count.append(user["followers_count"]) #フォロワー数 51 friends_count.append(user["friends_count"]) #フォロー数 52 statuses_count.append(user["statuses_count"]) #投稿数 53 54 #対象Tweetが101件以上となりnextページがある場合 55 if "next" in tweets.keys(): 56 #nextの値をパラメータに追加する 57 params['next'] = tweets["next"] 58 print(params) 59 tweet_list = tweets["results"] 60 61 #nextページがない場合(100件以内の場合と最終ページ用) 62 else: 63 print("最終ページなので取得終了") 64 break 65 66else: 67 print("ERROR: %d" % res.status_code)
回答1件
あなたの回答
tips
プレビュー