如何使用python-twitter搜索API获取最新的推文ID

时间:2013-05-09 16:06:23

标签: python twitter tweets python-twitter

我正试图找到一种不使用搜索API获取相同推文的方法。 这就是我正在做的事情:

  1. 向Twitter提出请求
  2. 商店推文
  3. 向Twitter提出另一个请求
  4. 商店推文,
  5. 比较2和4的结果
  6. 理想情况下,在步骤5中,我会得到0,这意味着没有收到重叠的推文。所以我不会多次向Twitter服务器询问相同的信息。

    但我认为我在第3步陷入困境,我必须再打一次电话。我试图使用'since_id'参数来获取某些特定点之后的推文。但我不确定如果我使用的价值是正确的。

    代码:

    import twitter
    
    class Test():
    
        def __init__(self):
            self.t_auth()
            self.hashtag = ['justinbieber']
    
            self.tweets_1 = []
            self.ids_1 = []
            self.created_at_1 = []
            self.tweet_text_1 = []
            self.last_id_1 = ''
            self.page_1 = 1
    
            self.tweets_2 = []
            self.ids_2 = []
            self.created_at_2 = []
            self.tweet_text_2 = []
            self.last_id_2 = ''
            self.page_2 = 1
    
    
            for i in range(1,16):
                self.tweets_1.extend(self.api.GetSearch(self.hashtag, per_page=100, since_id=self.last_id_1, page=self.page_1))
                self.page_1 += 1;
            print len(self.tweets_1)
            for t in self.tweets_1:
               self.ids_1.insert(0,t.id)
               self.created_at_1.insert(0,t.created_at)
               self.tweet_text_1.insert(0,t.text)
               self.last_id_1 = t.id               
    
            self.last_id_2 = self.last_id_1
    
            for i in range(1,16):
                self.tweets_2.extend(self.api.GetSearch(self.hashtag, per_page=100, since_id=self.last_id_2, page=self.page_2))
                self.page_2 += 1;
            print len(self.tweets_2)
            for t in self.tweets_2:
               self.ids_2.insert(0,t.id)
               self.created_at_2.insert(0,t.created_at)
               self.tweet_text_2.insert(0,t.text)
               self.last_id_2 = t.id
    
            print 'Total number of tweets in test 1: ', len(self.tweets_1)
            print 'Last id of test 1: ', self.last_id_1
    
            print 'Total number of tweets in test 2: ', len(self.tweets_2)
            print 'Last id of test 2: ', self.last_id_2
    
            print '##################################'
            print '#############OVERLAPING###########'
    
            ids_overlap = set(self.ids_1).intersection(self.ids_2)
            tweets_text_overlap = set(self.tweet_text_1).intersection(self.tweet_text_2)
            created_at_overlap = set(self.created_at_1).intersection(self.created_at_2)
    
            print 'Ids: ', len(ids_overlap)
            print 'Text: ', len(tweets_text_overlap)
            print 'Created_at: ', len(created_at_overlap)
    
            print ids_overlap
            print tweets_text_overlap
            print created_at_overlap
    
    
    
        def t_auth(self):
            consumer_key="xxx"
            consumer_secret="xxx"
            access_key = "xxx"
            access_secret = "xxx"
    
            self.api = twitter.Api(consumer_key, consumer_secret ,access_key, access_secret)
            self.api.VerifyCredentials()
    
            return self.api
    
    if __name__ == "__main__":
        Test()  
    

1 个答案:

答案 0 :(得分:1)

除了'since_id'之外,您还可以使用'max_id'。来自Twitter API documentation

  

在结果集中迭代:参数如count,until,since_id,max_id允许控制我们如何迭代搜索结果,因为它可能是一大组推文。

通过动态设置这些值,您可以将搜索结果限制为不重叠。例如,max_id设置为1100,since_id设置为1000,然后您将获得具有这两个值之间ID的推文。

相关问题