我使用了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
并使用filter方法的“follow”参数来检索由此特定ID生成的推文:
twitter_stream = Stream(auth, MyListener())
twitter_stream.filter(follow=["63728193"#random Twitter ID])
然而,它似乎没有完成任务,因为它不仅返回推文&由ID创建的转发,但也包括提及ID的每个推文(即转发)。那不是我想要的。
我确信必须有办法,因为Twitter提供的json文件中有一个“screen_name”字段。该screen_name字段给出了Tweet的创建者的名称。我只需要找到如何过滤这个screen_neame字段的数据。
答案 0 :(得分:2)
此行为是设计使然。引用Twitter streaming API docs:
对于指定的每个用户,流将包含:
- 用户创建的推文。
- 由用户转发的推文。
- 对用户创建的任何推文的回复。
- 转发用户创建的任何推文。
- 手动回复,无需按回复按钮即可创建(例如“@twitterapi I agree”)。
为您的目的处理它的最佳方式是检查收到推文的人是谁,我相信可以按照以下方式完成:
flatMap