twitterAPIを用いたtimelineの取得【その2】
あるアカウントを200ツイート取得してCSVに保存する
from requests_oauthlib import OAuth1Session import json from urllib import request import subprocess import csv keys = { "CK":'xxx', "CS":'xxx', "AT":'xxx', "AS":'xxx', } sess = OAuth1Session(keys["CK"], keys["CS"], keys["AT"], keys["AS"]) #タイムラインの最も上にいる人のツイートを100件取得する url = "https://api.twitter.com/1.1/statuses/user_timeline.json" usr_id = str(input("tweetを取得したいidを入力:")) params = {"screen_name":usr_id,#ユーザーネーム "count":200, #ツイートを最新から何件取得するか(最大200件) "exclude_replies":"true", "inclue_rts":"true" } req = sess.get(url,params=params) if req.status_code == 200: #レスポンスはJSON形式なのでparseする timeline = json.loads(req.text) file_name = dir_path + params["screen_name"] + ".csv" with open(file_name,"w") as f: writer = csv.writer(f,lineterminator="\n") for i,tweet in enumerate(timeline): tw_id = tweet["id_str"]#1: id tw_created_at = tweet["created_at"].split(" ") tw_created_at_year = tw_created_at[-1]#2: year tw_created_at_month = tw_created_at[1]#3: month tw_created_at_date = tw_created_at[2]#4: date tw_created_at_time = tw_created_at[3]#5: time tw_place = tweet["place"] if tw_place is not None: tw_place_id = tw_place["id"]#6: place_id tw_place_full_name = tw_place["full_name"]#7: place_name else: tw_place_id = "" tw_place_full_name = "" tw_txt = tweet["text"] a_tweet_info_list = [tw_id,tw_created_at_year,tw_created_at_month,tw_created_at_date,tw_created_at_time,tw_place_id,tw_place_full_name,tw_txt] writer.writerow(a_tweet_info_list)
GETリクエスト時のパラメータであるinclude_rtsはfalseにしてもRTを含んだツイートとなってしまったのだが, 解決方法がわからなかった.
どうしてもRTを除外したツイートを取得したい場合は, 各ツイートに対して
if tweet["text"][:3] is not "@RT": ||<