gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:09 25 4
gpt4 key购买 nike

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

  1. 向 Twitter 提出请求
  2. 存储推文
  3. 向 Twitter 发出另一个请求
  4. 存储推文,
  5. 比较 2 和 4 的结果

理想情况下,在第 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()

最佳答案

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

Iterating in a result set: parameters such count, until, since_id, max_id allow to control how we iterate through search results, since it could be a large set of tweets.

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

关于python - 如何使用 python-twitter 搜索 API 获取最新的推文 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com