前提・実現したいこと
Colabratory上でpython3を使い、Twitterのハッシュタグについての収集を行っており、またツイートに含まれるハッシュタグの組み合わせを抜き出して重複度を求めるような収集をしています。
当初はTweepyを用いて収集を行っていたのですが、TwitterAPIを用いた方法では1週間以上の過去のツイートに遡って収集が行えないのでGetOldTweetsというパッケージを使用しツイートの収集を行うことにしました。
しかし、Tweepyを用いて作っているプログラムをGetOldTweetsを利用したプログラムに変えて実行したところ以下のエラーメッセージが発生しました。
追記:回答いただいたものを実行した結果、再びエラーが生じてしまったので当該エラーに変更しました。また、該当ソースコードも変更いたしました。
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last) <ipython-input-35-d2284eea22e6> in <module>() 15 for v in tweet: 16 print(v.text) ---> 17 for tag0, tag1 in itertools.combinations(v.entities['hashtags'], 2): 18 tag0 = tag0['text'] 19 tag1 = tag1['text'] AttributeError: 'Tweet' object has no attribute 'entities'
該当のソースコード
python3
1!git clone https://github.com/Jefferson-Henrique/GetOldTweets-python 2!pip install lxml pyquery 3import os 4os.chdir('GetOldTweets-python') 5import got3 as got 6import json 7import itertools 8import networkx as nx 9 10G = nx.Graph() 11 12tweetCriteria = got.manager.TweetCriteria().setQuerySearch('#熱中症').setSince("2018-07-10").setUntil( 13 "2018-08-30").setMaxTweets(10000) 14tweet = got.manager.TweetManager.getTweets(tweetCriteria) 15print(tweet) 16for v in tweet: 17 print(v.text) 18 for tag0, tag1 in itertools.combinations(v.entities['hashtags'], 2): 19 tag0 = tag0['text'] 20 tag1 = tag1['text'] 21 if G.has_edge(tag0, tag1): 22 G[tag0][tag1]["weight"] += 1 23 else: 24 G.add_edge(tag0, tag1, weight=1)
試したこと
Tweepyを利用して作っているプログラムをGetOldTweetsで置き換えて利用できるであろうと目星をつけて実行したこと。
ただどうプログラムを組めばいいか目星になるものがなく、方法を試すにも何をすればいいかわからなくなってしまっています。
補足情報(FW/ツールのバージョンなど)
python3
1from tweepy.streaming 2import StreamListener 3import json 4import networkx as nx 5 6G = nx.Graph() 7 8class MyStreamListener(StreamListener): 9 def __init__(self, api, **kw): 10 self.api = api 11 super(tweepy.StreamListener, self).__init__() 12 self.twcnt = 0 13 14 def on_status(self, tweet): 15 self.twcnt += 1 16 for tag0, tag1 in itertools.combinations(tweet.entities['hashtags'], 2): 17 tag0 = tag0['text'] 18 tag1 = tag1['text'] 19 if G.has_edge(tag0, tag1): 20 G[tag0][tag1]["weight"] += 1 21 else: 22 G.add_edge(tag0, tag1, weight=1) 23 24 if self.twcnt > 10000: 25 return False 26 27 def on_error(self, status): 28 return True 29 30auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 31auth.set_access_token(access_token, access_token_secret) 32api = tweepy.API(auth) 33stream = tweepy.Stream(auth, MyStreamListener(api)) 34stream.filter(track=['#RTした人をフォローする'])
上記のプログラムを用いてリアルタイムで収集していた時の結果の一部が下記の画像です。
GetOldTweetsを利用して上記の画像のように抜き出していきたいと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/01 13:47
2018/09/01 13:51
2018/09/01 13:58
2018/09/01 14:55 編集
2018/09/01 14:59
2018/09/01 15:07