teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

7

埋め込みHTMLからのurl抽出を追加

2021/03/08 08:06

投稿

退会済みユーザー
answer CHANGED
@@ -3,6 +3,7 @@
3
3
  ```
4
4
  import tweepy
5
5
  import csv
6
+ import re # 追加
6
7
  # 下記APIキーは自分のに書き換えてください。
7
8
  consumer_key = "XXXXXXXXXXXXXXXX"
8
9
  consumer_secret = "XXXXXXXXXXXXXXXX"
@@ -27,8 +28,14 @@
27
28
  print(tweet.text)
28
29
  oembed = api.get_oembed("https://twitter.com/"+tweet.user.screen_name+"/status/"+str(tweet.id))
29
30
  html = oembed.get("html")
31
+ url_re = re.search(re.compile(r'<a href=\"(https://t.co/[A-Za-z0-9]+)\">'), html)
32
+ if url_re:
33
+ url = url_re.group(1)
34
+ else:
35
+ url = ''
30
- tweet_data.append([tweet.id, tweet.created_at,tweet.text.replace('\n',''),tweet.favorite_count, tweet.retweet_count, html])
36
+ tweet_data.append([tweet.id, tweet.created_at, tweet.text.replace('\n',''), tweet.favorite_count, tweet.retweet_count, url])
31
37
 
38
+
32
39
  #csv出力
33
40
  with open('XXXXXXXXXXXXXXXX.csv', 'w',newline='',encoding='utf-8') as f:
34
41
  writer = csv.writer(f, lineterminator='\n')

6

修正

2021/03/08 08:06

投稿

退会済みユーザー
answer CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
  tweet_data = []
25
25
 
26
- for tweet in tweepy.Cursor(api.user_timeline,screen_name = user ,exclude_replies = True).items():
26
+ for tweet in tweepy.Cursor(api.user_timeline,screen_name = user ,exclude_replies = True).items(limit):
27
27
  print(tweet.text)
28
28
  oembed = api.get_oembed("https://twitter.com/"+tweet.user.screen_name+"/status/"+str(tweet.id))
29
29
  html = oembed.get("html")

5

修正

2021/03/07 12:06

投稿

退会済みユーザー
answer CHANGED
@@ -20,6 +20,9 @@
20
20
 
21
21
  # レート超過しないように100件としていますが、増やしても構いません。
22
22
  limit = 100
23
+
24
+ tweet_data = []
25
+
23
26
  for tweet in tweepy.Cursor(api.user_timeline,screen_name = user ,exclude_replies = True).items():
24
27
  print(tweet.text)
25
28
  oembed = api.get_oembed("https://twitter.com/"+tweet.user.screen_name+"/status/"+str(tweet.id))

4

修正

2021/03/07 12:05

投稿

退会済みユーザー
answer CHANGED
@@ -3,7 +3,7 @@
3
3
  ```
4
4
  import tweepy
5
5
  import csv
6
- # 下記APIキーは自分のに書き換えてください。
6
+ # 下記APIキーは自分のに書き換えてください。
7
7
  consumer_key = "XXXXXXXXXXXXXXXX"
8
8
  consumer_secret = "XXXXXXXXXXXXXXXX"
9
9
  access_key = "XXXXXXXXXXXXXXXX"
@@ -12,12 +12,23 @@
12
12
  auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
13
13
  auth.set_access_token(access_key, access_secret)
14
14
 
15
+ # wait_on_rate_limit=Trueとした場合、レート超過したら自動的に15分止まります。
15
- api = tweepy.API(auth)
16
+ api = tweepy.API(auth, wait_on_rate_limit=True)
17
+
18
+ # userは抽出したいユーザー名に変えてください。
16
19
  user = "JAXA_jp"
17
20
 
21
+ # レート超過しないように100件としていますが、増やしても構いません。
18
- # テスト用なので10個までに制限
22
+ limit = 100
19
- for tweet in tweepy.Cursor(api.user_timeline, screen_name=user, exclude_replies=True).items(10):
23
+ for tweet in tweepy.Cursor(api.user_timeline,screen_name = user ,exclude_replies = True).items():
24
+ print(tweet.text)
20
25
  oembed = api.get_oembed("https://twitter.com/"+tweet.user.screen_name+"/status/"+str(tweet.id))
21
- html = oembed["html"]
26
+ html = oembed.get("html")
27
+ tweet_data.append([tweet.id, tweet.created_at,tweet.text.replace('\n',''),tweet.favorite_count, tweet.retweet_count, html])
28
+
29
+ #csv出力
30
+ with open('XXXXXXXXXXXXXXXX.csv', 'w',newline='',encoding='utf-8') as f:
31
+ writer = csv.writer(f, lineterminator='\n')
32
+ writer.writerow(["id", "created_at", "text", "fav", "RT", "URL"])
22
- print(html)
33
+ writer.writerows(tweet_data)
23
34
  ```

3

2021/03/07 12:03

投稿

退会済みユーザー
answer CHANGED
@@ -1,10 +1,23 @@
1
1
  [get_oembed()](https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L440)を使います。
2
2
 
3
3
  ```
4
+ import tweepy
4
- (略)
5
+ import csv
6
+ # 下記APIキーは自分の者に書き換えてください。
7
+ consumer_key = "XXXXXXXXXXXXXXXX"
8
+ consumer_secret = "XXXXXXXXXXXXXXXX"
9
+ access_key = "XXXXXXXXXXXXXXXX"
10
+ access_secret = "XXXXXXXXXXXXXXXX"
11
+
12
+ auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
13
+ auth.set_access_token(access_key, access_secret)
14
+
15
+ api = tweepy.API(auth)
16
+ user = "JAXA_jp"
17
+
18
+ # テスト用なので10個までに制限
5
- for tweet in tweepy.Cursor(api.user_timeline, screen_name="xxx", exclude_replies=True).items():
19
+ for tweet in tweepy.Cursor(api.user_timeline, screen_name=user, exclude_replies=True).items(10):
6
20
  oembed = api.get_oembed("https://twitter.com/"+tweet.user.screen_name+"/status/"+str(tweet.id))
7
-
8
21
  html = oembed["html"]
9
- ()
22
+ print(html)
10
23
  ```

2

修正

2021/03/07 02:34

投稿

退会済みユーザー
answer CHANGED
@@ -3,7 +3,8 @@
3
3
  ```
4
4
  (略)
5
5
  for tweet in tweepy.Cursor(api.user_timeline, screen_name="xxx", exclude_replies=True).items():
6
- oembed = api.get_oembed("https://twitter.com/mameyudoufu/status/"+str(tweet.id))
6
+ oembed = api.get_oembed("https://twitter.com/"+tweet.user.screen_name+"/status/"+str(tweet.id))
7
+
7
8
  html = oembed["html"]
8
9
  (略)
9
10
  ```

1

修正

2021/03/06 14:46

投稿

退会済みユーザー
answer CHANGED
@@ -3,7 +3,7 @@
3
3
  ```
4
4
  (略)
5
5
  for tweet in tweepy.Cursor(api.user_timeline, screen_name="xxx", exclude_replies=True).items():
6
- oembed = api.get_oembed(tweet.id)
6
+ oembed = api.get_oembed("https://twitter.com/mameyudoufu/status/"+str(tweet.id))
7
7
  html = oembed["html"]
8
8
  (略)
9
9
  ```