使用Tweepy过滤Twitter数据

时间:2017-02-14 16:30:15

标签: python twitter twitter-oauth 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

并使用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字段的数据。

1 个答案:

答案 0 :(得分:2)

此行为是设计使然。引用Twitter streaming API docs

  

对于指定的每个用户,流将包含:

     
      
  • 用户创建的推文。
  •   
  • 由用户转发的推文。
  •   
  • 对用户创建的任何推文的回复。
  •   
  • 转发用户创建的任何推文。
  •   
  • 手动回复,无需按回复按钮即可创建(例如“@twitterapi I agree”)。
  •   

为您的目的处理它的最佳方式是检查收到推文的人是谁,我相信可以按照以下方式完成:

flatMap