質問編集履歴

2

コードを変更

2022/10/22 06:50

投稿

Lia
Lia

スコア9

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,8 @@
28
28
 
29
29
  ### 該当のソースコード
30
30
 
31
+
32
+ ```python
31
33
  import tweepy
32
34
  import pandas as pd
33
35
  import csv
@@ -36,7 +38,7 @@
36
38
  import pytz
37
39
 
38
40
 
39
- # 各種ツイッターのキーをセット
41
+ #各種ツイッターのキーをセット
40
42
  consumer_key = ''
41
43
  consumer_secret = ''
42
44
  access_key = ''
@@ -56,15 +58,14 @@
56
58
 
57
59
  #関数: UTCをJSTに変換する
58
60
  def change_time_JST(u_time):
59
-
60
61
  #イギリスのtimezoneを設定するために再定義する
61
62
  utc_time = datetime(u_time.year, u_time.month,u_time.day, \
62
63
  u_time.hour,u_time.minute,u_time.second, tzinfo=timezone.utc)
63
64
 
64
- #タイムゾーンを日本時刻に変換
65
+ #タイムゾーンを日本時刻に変換
65
66
  jst_time = utc_time.astimezone(pytz.timezone("Asia/Tokyo"))
66
67
 
67
- # 文字列で返す
68
+ #文字列で返す
68
69
  str_time = jst_time.strftime("%Y-%m-%d_%H:%M:%S")
69
70
  return str_time
70
71
 
@@ -113,4 +114,6 @@
113
114
 
114
115
  #CSVファイルを出力する
115
116
  df.to_csv(file_name,encoding='utf-8-sig',index=False)
117
+ ```
116
118
 
119
+

1

コードを変更しました

2022/10/22 06:45

投稿

Lia
Lia

スコア9

test CHANGED
File without changes
test CHANGED
@@ -13,16 +13,18 @@
13
13
  until = "2017-08-30_00:00:00_JST"
14
14
  と指定すればいいとネットに書いてあったのですが変数を指定した後がわかりません。
15
15
 
16
- ※参考サイトです
16
+ ※参考サイト
17
+ 期間指定をしていたのはこちらの2人しかいなかったので自分のコードで応用するのは難しく、できませんでした。
17
18
  https://vatchlog.com/tweepy-search-time/
18
19
  https://qiita.com/areph/items/0745cb744a12810334c6
19
20
 
21
+ コード全般の参考サイトはこちらです
22
+ https://python-man.club/python_twitter_api_tweet/
23
+
20
24
  ### 発生している問題
21
25
 
22
- sinceとuntilを指定した後、tweepy.Cursor()のかぎかっこにどのように入れればいいのかがいまいちわかりません。アドバイスよろしくお願いします。
26
+ sinceとuntilを指定した後、tweepy.Cursor()のかぎかっこにどのように入れればいいのかがいまいちわかりません。そもそもここに入れるかすら分からないのでアドバイスよろしくお願いします。
23
27
  以下がコードとなっています。ここでは例として君の名は(kiminona_movie)のアカウントのツイートを収集しました。
24
-
25
- またこれは余談ですがcsvファイルに出力してutf-8と指定しているのに、ツイートの本文が文字化けしている状態で出力されてしまっています。
26
28
 
27
29
  ### 該当のソースコード
28
30
 
@@ -30,6 +32,9 @@
30
32
  import pandas as pd
31
33
  import csv
32
34
  import time
35
+ from datetime import datetime,timezone
36
+ import pytz
37
+
33
38
 
34
39
  # 各種ツイッターのキーをセット
35
40
  consumer_key = ''
@@ -41,22 +46,71 @@
41
46
  auth.set_access_token(access_key, access_secret)
42
47
  api = tweepy.API(auth)
43
48
 
49
+
50
+ #since = "2017-08-26_00:00:00_JST"
51
+ #until = "2017-08-30_23:59:59_JST"
52
+
53
+
54
+ tweets = tweepy.Cursor(api.user_timeline, screen_name = "kiminona_movie", exclude_replies = True).items()
55
+
56
+
57
+ #関数: UTCをJSTに変換する
58
+ def change_time_JST(u_time):
59
+
60
+ #イギリスのtimezoneを設定するために再定義する
61
+ utc_time = datetime(u_time.year, u_time.month,u_time.day, \
62
+ u_time.hour,u_time.minute,u_time.second, tzinfo=timezone.utc)
63
+
64
+ #タイムゾーンを日本時刻に変換
65
+ jst_time = utc_time.astimezone(pytz.timezone("Asia/Tokyo"))
66
+
67
+ # 文字列で返す
68
+ str_time = jst_time.strftime("%Y-%m-%d_%H:%M:%S")
69
+ return str_time
70
+
71
+
44
72
  #ツイート取得
45
73
  tweet_data = []
46
74
 
47
- since = "2017-08-26_00:00:00_JST"
48
- until = "2017-08-30_00:00:00_JST"
49
75
 
76
+ for tweet in tweets:
77
+ #ツイート時刻とユーザのアカウント作成時刻を日本時刻にする
50
- for tweet in tweepy.Cursor(api.user_timeline, screen_name = "kiminona_movie", exclude_replies = True).items():
78
+ tweet_time = change_time_JST(tweet.created_at)
51
- tweet_data.append([tweet.id, tweet.created_at, tweet.text.replace('\n',''), tweet.favorite_count, tweet.retweet_count,
52
- tweet.user.friends_count, tweet.user.followers_count, create_account_time])
79
+ create_account_time = change_time_JST(tweet.user.created_at)
80
+
81
+ #tweet_dataの配列に取得したい情報を入れていく
82
+ tweet_data.append([
83
+ tweet.id,
84
+ tweet_time,
85
+ tweet.text,
86
+ tweet.favorite_count,
87
+ tweet.retweet_count,
88
+ tweet.user.name,
89
+ tweet.user.friends_count,
90
+ tweet.user.followers_count,
91
+ create_account_time,
92
+ ])
53
93
 
54
94
 
55
- #csv出力
56
- with open('tweets_Kiminonaha.csv', 'w',newline='',encoding='utf-8') as f:
57
- writer = csv.writer(f, lineterminator='\n')
58
- writer.writerow(["id","created_at","text","fav","RT", "friends", "followers", "create_account"])
59
- writer.writerows(tweet_data)
60
- pass
95
+ labels=[
96
+ 'ツイートID',
97
+ 'ツイート時刻',
98
+ 'ツイート本文',
99
+ 'いいね数',
100
+ 'リツイート数',
101
+ 'アカウント名',
102
+ 'フォロー数',
103
+ 'フォロワー数',
104
+ 'アカウント作成日時'
105
+ ]
61
106
 
107
+ #tw_dataのリストをpandasのDataFrameに変換
108
+ df = pd.DataFrame(tweet_data,columns=labels)
62
109
 
110
+ #CSVファイルに出力する
111
+ #CSVファイルの名前を決める
112
+ file_name='kiminonaha.csv'
113
+
114
+ #CSVファイルを出力する
115
+ df.to_csv(file_name,encoding='utf-8-sig',index=False)
116
+