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

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

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

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

Python

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

3回答

3257閲覧

指定したユーザーの指定した文字列が含まれているツイートを取得したい

study_111

総合スコア82

Twitter

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

Python

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/05/31 00:34

編集2020/05/31 00:44

twetterから、指定したユーザー(自分)の指定した文字列が含まれているツイートをタイムラインから取得したいです。
下記のように試したのですが、タイムラインからは、ユーザーID「@test_account」のツイートではなく、全く別の人のツイートが取得されてしまいました。

for tweet in tweepy.Cursor(api.search,screen_name='test_account',q='2020年05月28日').items(): print('-------------------------') print(tweet.text) exit()

取得されたツイートには、部分的に「28日」や「5月」の文字は入っていたのですが、「2020年05月28日」と連続した文字列が入っていませんでした為、部分的ではなく、一つの単語として挿入されているツイートを取得したいと考えています。
こちらの取得方法につきまして、どなたかアドバイス頂けましたら幸いです。
追記です
「タイムライン」から取得したいと記載したのですが、正確には「自分がしたツイートの一覧」から検索文字列が記載されているツイートを取得したいと考えております。

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

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

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

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

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

guest

回答3

0

すみません、コメント欄だとコードや画像が貼れないのでこちらに記述しますね。

以下のようにしてみたら、特定ユーザーの特定のキーワードで検索できるみたいです。

python

1for tweet in tweepy.Cursor(api.search, q='"2020年05月28日" from:@TakumiSoftware').items(10): 2 if (tweet.text[:2] == 'RT'): continue 3 4 print(tweet.user.name) 5 print(tweet.text) 6 print('-----------------------------------------------')

イメージ説明

投稿2020/06/01 00:14

編集2020/06/01 00:19
autumn_nsn

総合スコア335

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

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

0

こちらでやってみましたが、それなりにテキストは出力されますね。

Python

1import os 2import tweepy 3 4# 環境変数から認証情報を取得する。 5TWITTER_API_KEY = os.environ['TWITTER_API_KEY'] 6TWITTER_API_SECRET_KEY = os.environ['TWITTER_API_SECRET_KEY'] 7TWITTER_ACCESS_TOKEN = os.environ['TWITTER_ACCESS_TOKEN'] 8TWITTER_ACCESS_TOKEN_SECRET = os.environ['TWITTER_ACCESS_TOKEN_SECRET'] 9 10# 認証情報を設定する。 11auth = tweepy.OAuthHandler(TWITTER_API_KEY, TWITTER_API_SECRET_KEY) 12auth.set_access_token(TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET) 13 14api = tweepy.API(auth) # APIクライアントを取得する。 15 16for tweet in tweepy.Cursor(api.search, q='2020年05月28日').items(10): 17 print('-------------------------') 18 print(tweet.text) 19

イメージ説明

認証の段階でエラーになっているとかはないでしょうか?
あるいは1日(30分だったかな?)の使用制限に引っかかっているとか?

投稿2020/05/31 02:29

編集2020/05/31 02:37
autumn_nsn

総合スコア335

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

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

study_111

2020/05/31 02:45 編集

ご回答ありがとうございます。 自分もtweepy.Cursorの引数に「q='2020年05月28日'」こちらのみを指定した場合は、ツイートは取得できるのですが、特定のアカウント(自分)を以下のように指定し試してみたのですが、「 q='from:test_account "2020年05月28日"')」ツイートが取得できていない状況なのですよね。。
guest

0

APIにも
https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets
tweepyにも
http://docs.tweepy.org/en/v3.5.0/api.html#API.search
screen_nameなんていうパラメータはないですよね。どうして、何を見て、使えると思ったのでしょうか?


https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators
を読みましょう。

from:interior sent from Twitter account “interior”.

という項があります。

python

1for tweet in tweepy.Cursor(api.search, q='from:test_account "2020年05月28日"').items(): 2 print('-------------------------') 3 print(tweet.text)

が期待するクエリかなと思います。


もっと"間違いなくヒットする"と思われる検索語はヒットしますか?
何ができて、何が出来ないのかを線引きしていく必要があります。

と書きました。

問題の切り分け、質問のやりとりは

python

1for tweet in tweepy.Cursor(api.search, q='from:Kantei_Saigai "感染症対策"').items(): 2 print(tweet.id, tweet.text)

のような"間違いなくヒットする"と思われるものでおこないましょう。
このコードで、私の元ではヒットしました。

上記のコードで、質問者さんの元ではヒットしますか?

ヒットしないなら開示されていない部分のコードの間違い
ヒットするなら質問者さんの実際に入れているクエリの問題
と切り分けられます。

前者なら開示するコードの範囲を広げる、後者なら"実際に入れているクエリ"を開示する、というのが問題解決のためのステップです。

投稿2020/05/31 01:01

編集2020/05/31 03:04
quickquip

総合スコア11202

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

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

study_111

2020/05/31 01:14 編集

ご回答ありがとうございます。 ツイッターの検索ボックスで、「from:test_account 2020年05月28日」と検索してみたら、該当のツイートが出てきたのですが、プログラム側で、ご提示頂いたコードを参考に、実行し試しみたのですが、何故か何も表示されませんでした...
study_111

2020/05/31 01:17

「screen_name」は「API.user_timeline」の引数だったのですが、色々調べている過程で混乱してしまっていました。。
quickquip

2020/05/31 01:20 編集

ツイッターの検索ボックスとAPIとでは挙動が違う(ツイッターの検索ボックスは公開APIとは違うエンドポイントに繋がっている)ので、不思議はありません。現実の挙動を受け入れるしかないです。 2020年05月28日 じゃなくて、もっと"間違いなくヒットする"と思われる検索語はヒットしますか? 何ができて、何が出来ないのかを線引きしていく必要があります。
study_111

2020/05/31 01:25

いえ...先ほどから、検索ワードを色々と試しているのですが、全くヒットせず、print(tweet.text) の中身が表示されない状況です...
study_111

2020/05/31 03:16

追記ありがとうございます。 追記頂いたコードで試してみましたら、コロナウイルスに関するツイートがヒットしました。 となると、自分の入れたクエリの問題ということですよね。。 しかし、アカウントのユーザーID、及び検索ワードはコピーし、入力したにも関わらず取得できないということは、何故なのでしょうかね...
study_111

2020/05/31 03:24 編集

色々な検索ワードで試しても失敗してしまうことを考えますと、自分のアカウントのツイートの検索自体が何らかの理由でできていない気が致します。。
quickquip

2020/05/31 08:04

いわゆる"鍵付き"だと(たとえ自分のトークンであっても)検索できないようですね あと一応ですが"1週間つぶやいていない"とかそういうことではないですよね
study_111

2020/05/31 08:44

いえ、鍵はつけていないです。ツイートした日時で申しますと、直近だと3日前にはつぶやいていますね。 取り敢えずは、質問させて頂いたロジックを使用せず他の方法で直面していた問題は解決出来たのですが、どうもツイートを取得出来ないというのは気になる所ですね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問