質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1188閲覧

pythonによるTwitterの書き込み取得について

yuki10

総合スコア13

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/17 16:20

編集2021/10/17 16:32

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/10/17 16:30

冒頭のシークレットキーが本物であれば、これを使って、誰でもあなたのTwitter権限で何でもできてしまいます。もし本物なら、編集しても編集前のものが見えるので、質問の削除依頼を出して、やり直しましょう。
guest

回答1

0

ベストアンサー

URLはhttps://api.twitter.com/2/tweets/search/recentです。

また、取得件数のパラメータはmax_resultsです。

2点修正すれば、4XX系のエラーは出なくなると思います。

ただ、レスポンスがv1.1から変わっているからか、その後でエラーになると思います。

Python

1print(res.text)

上記を追加すれば、レスポンスの中身は出力して確認できます。

GET /2/tweets/search/recent
公式のドキュメントを見ながら、修正してみてください。
レスポンスのフォーマットも記載されています。

投稿2021/10/20 09:11

takutakuya

総合スコア979

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問