@jurikikuhara0903

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pythonを用いたtwitterのスクレイピングでユーザーIDの取得

解決したいこと

現在卒業論文のため、twitterでスクレイピングをしようと考えています。そのためにツイートの内容と同時に、ツイートしたユーザーID(@マークの付いたもの)を取得したいのですが、現在のtwitterAPIの仕様においてどのようなコードを書けばツイートと一緒にユーザーIDまで取得できるのかがわからずに困っています。どうか教えていただけないでしょうか。
現在は取得したツイート内容をcsvファイルに収めているので、これと一緒にユーザーIDの情報もリストに入れたいと考えています。

環境

・windows11
・python3.10.9
・IDLE

現在のコード

現在pythonで使用しているコードは以下の通りです。これでツイートのみ取得することができています。

import json
from requests_oauthlib import OAuth1Session
from dateutil import parser
from pytz import timezone
import datetime
import csv

API_KEY = "自分のAPIキー"
API_SECRET_KEY = "自分のシークレットキー"
ACCESS_TOKEN = "自分のアクセストークン"
ACCESS_TOKEN_SECRET = "自分のアクセストークンシークレット"
   #Twitter APIの利用申請時に確認したキーとトークンを設定

tweet_count = 100 #Standard sarch APIのパラメーターの内、必要なものを変数に設定
result_type = "recent"
search_keyword = "デパス"
params = {"max_results": tweet_count, "query": search_keyword}#キーと値(ここでは変数に格納)を元に全てのパラメーターを辞書型で変数paramsに格納

url = "https://api.twitter.com/2/tweets/search/recent"

twitter = OAuth1Session(API_KEY,API_SECRET_KEY,ACCESS_TOKEN,ACCESS_TOKEN_SECRET) #キーとトークンを元にAPIに接続
response = twitter.get(url, params=params) #URLとパラメーターを元に検索結果を取得
twitter_data = json.loads(response.text)

tweet_list = []
for tweet in twitter_data["data"]: # 指定した100件の検索結果からfor文で1件ずつ取り出して処理
    tweet_text = tweet["text"]
    tweet_list.append([tweet_text])
    # 抽出したデータをリストtweet_listに格納

import csv
import datetime

csv_header = ["ツイート"]
csv_data = datetime.datetime.today().strftime("%Y%m%d%H")
csv_file_path = r"C:\Users\miyu tsuruoka\OneDrive - 学校法人甲南学園 情報システム室\卒研関連\取得したツイート\\" + "デパスtwitter0_" + csv_data + ".csv"
with open(csv_file_path, "w", errors="ignore", newline="") as file:
    writer = csv.writer(file, lineterminator="\n")
    writer.writerow(csv_header)
    writer.writerows(tweet_list)
0 likes

1Answer

Comments

Your answer might help someone💌