使用 Tweepy 过滤 Twitter 数据
Filtering Twitter data using Tweepy
我使用了 Marco Bonzanini 关于挖掘 Twitter 数据的教程:https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/
class MyListener(StreamListener):
def on_data(self, data):
try:
with open('python.json', 'a') as f:
f.write(data)
return True
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
print(status)
return True
并使用过滤器方法的 "follow" 参数来检索此特定 ID 生成的推文:
twitter_stream = Stream(auth, MyListener())
twitter_stream.filter(follow=["63728193"#random Twitter ID])
然而,它似乎没有完成任务,因为它不仅 returns 由 ID 创建的推文和转推,而且还包括每条提到该 ID 的推文(即转推)。那不是我想要的。
我确定一定有办法做到这一点,因为 Twitter 提供的 json 文件中有一个 "screen_name" 字段。 screen_name 字段给出了推文创建者的姓名。我只需要找到如何过滤此 screen_neame 字段上的数据。
此行为是设计使然。引用 Twitter streaming API docs:
For each user specified, the stream will contain:
- Tweets created by the user.
- Tweets which are retweeted by the user.
- Replies to any Tweet created by the user.
- Retweets of any Tweet created by the user.
- Manual replies, created without pressing a reply button (e.g. “@twitterapi I agree”).
为了您的目的处理它的最佳方法是在收到推文时检查是谁创建的,我相信可以按如下方式完成:
class MyListener(StreamListener):
def on_data(self, data):
try:
if data._json['user']['id'] == "63728193":
with open('python.json', 'a') as f:
f.write(data)
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
print(status)
return True
我使用了 Marco Bonzanini 关于挖掘 Twitter 数据的教程:https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/
class MyListener(StreamListener):
def on_data(self, data):
try:
with open('python.json', 'a') as f:
f.write(data)
return True
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
print(status)
return True
并使用过滤器方法的 "follow" 参数来检索此特定 ID 生成的推文:
twitter_stream = Stream(auth, MyListener())
twitter_stream.filter(follow=["63728193"#random Twitter ID])
然而,它似乎没有完成任务,因为它不仅 returns 由 ID 创建的推文和转推,而且还包括每条提到该 ID 的推文(即转推)。那不是我想要的。
我确定一定有办法做到这一点,因为 Twitter 提供的 json 文件中有一个 "screen_name" 字段。 screen_name 字段给出了推文创建者的姓名。我只需要找到如何过滤此 screen_neame 字段上的数据。
此行为是设计使然。引用 Twitter streaming API docs:
For each user specified, the stream will contain:
- Tweets created by the user.
- Tweets which are retweeted by the user.
- Replies to any Tweet created by the user.
- Retweets of any Tweet created by the user.
- Manual replies, created without pressing a reply button (e.g. “@twitterapi I agree”).
为了您的目的处理它的最佳方法是在收到推文时检查是谁创建的,我相信可以按如下方式完成:
class MyListener(StreamListener):
def on_data(self, data):
try:
if data._json['user']['id'] == "63728193":
with open('python.json', 'a') as f:
f.write(data)
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
print(status)
return True