質問編集履歴
2
コードを変更
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
コードを変更しました
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
|
-
|
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
|
-
|
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
|
-
|
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
|
+
|