若者論を研究するブログ

打ち捨てられた知性の墓場

MENU

特定の語句を含む引用リツイートを取得する方法について

異常にバズったツイートについて、特定の語句を含む引用リツイートの数などを調べたい時に使います。APIキーとトークンは事前に設定しておいてください。なお引用RTのRT(分かりにくいな…)は除外していますが、含めたい場合は「#RTは除く」の箇所をコメントアウトしてください。

# -*- coding: utf-8 -*-
from requests_oauthlib import OAuth1Session, OAuth1
import json
import requests
import urllib
import sys
import io

#検索文字列設定
tid = input('ツイートIDを入力してください->')
kwd = input('検索ワードを入力してください->')
word = tid + ' ' + 'AND' + ' ' + kwd 

#RTは除く
word += ' exclude:retweets' 
word = urllib.parse.quote_plus(word) 

# デフォルト文字コードをutf8に変更
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

#APIキー情報設定
consumer_key = ""
consumer_key_secret = ""
access_token = ""
access_token_secret = ""

#TwitterAPIアクセス
url = "https://api.twitter.com/1.1/search/tweets.json?count=100&lang=ja&q=" + word
auth = OAuth1(consumer_key, consumer_key_secret, access_token, access_token_secret)
response = requests.get(url, auth = auth)
data = response.json()['statuses']

#データ表示
cnt = 0
while True:
    for tweet in data:
        print("------------------------------------------------------------------")
        print(tweet["id"])#ツイートID
        print(tweet["text"])#ツイート内容
        print(tweet["created_at"])#ツイート日時
        cnt += 1
        maxid = int(tweet["id"]) - 1

    #ツイートがない場合ループ終了
    if len(data) == 0:
        break

    url = "https://api.twitter.com/1.1/search/tweets.json?count=100&lang=ja&q=" + word + "&max_id=" + str(maxid)
    auth = OAuth1(consumer_key, consumer_key_secret, access_token, access_token_secret)
    response = requests.get(url, auth = auth)
    data = response.json()['statuses']

print("ツイート数:" + str(cnt))
使用例


たとえばこのツイートについて、"みずほ"を含む引用リツイートを調べたい時はツイートIDに"1527214175872700417",検索ワードに"みずほ"と入力します。

python twitter.py
ツイートIDを入力してください->1527214175872700417
検索ワードを入力してください->みずほ
------------------------------------------------------------------
1527839999655550976
あ、だからみずほ銀行って頭悪いトラブルばかり起こすんだ!納得! https://t.co/8hM2QoVeKD
Sat May 21 02:33:36 +0000 2022
------------------------------------------------------------------
(中略)
------------------------------------------------------------------
1527222311262138368
なるほどね どこまで学ばせるべきかということね
多分偉くて賢いどっかの人が決めてるんだろうね
まあ三角関数の重要性が認識できない奴が決める奴の中に入れるべきじゃないけどな
最終的にみずほ銀行みたいな国が出来上がるわ https://t.co/kPOYFbk7i1
Thu May 19 09:39:08 +0000 2022
ツイート数:171

"みずほ"を含む引用リツイートのID, 投稿内容,投稿日時が表示され最後にツイート総数が表示されます。ちなみに引用RTのRTまで含めるとツイート総数は644件になります。