当前位置: 首页 > 知识库问答 >
问题:

使用 Tweepy 检索 Twitter 数据

潘琨
2023-03-14

我正在使用使用Tweepy库的Python代码来检索特定主题标签的Twitter数据,但问题是我需要检索特定时期,例如,从2013年6月30日到2013年12月30日。我该怎么做?

#imports
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener

#setting up the keys
consumer_key = '……………….'
consumer_secret = '……………..' 
access_token = '……………….'
access_secret = '……………..'

class TweetListener(StreamListener):
# A listener handles tweets are the received from the stream.
#This is a basic listener that just prints received tweets to standard output

  def on_data(self, data):
    print (data)
    return True

  def on_error(self, status):
    print (status)



#printing all the tweets to the standard output
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)



stream = Stream(auth, TweetListener())

t = u"#سوريا"
stream.filter(track=[t])

共有1个答案

养星汉
2023-03-14

我仍在调查为什么我无法使用 tweepy 获得相同的结果。Cursor(api.search, geocode=.., q=query, until=date ) 也许就是因为这个原因。但是我可以使用Tweepy在两个日期之间检索Twitter数据,bty通过这些步骤。

首先,我在开始日期和结束日期之间创建了一个日期生成器。

def date_range(start,end):
   current = start
   while (end - current).days >= 0:
      yield current
      current = current + datetime.timedelta(seconds=1)  #Based on your need, but you could do it per day/minute/hour

然后,我创建了一个< code >监听器,这样我就可以通过访问< code>status.created_at来获取在特定日期创建的推文

您的代码应如下所示:

import tweepy 
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import json
import datetime 


#Use your keys
consumer_key = '...'
consumer_secret = '...' 
access_token = '...'
access_secret = '...'


auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

def date_range(start,end):
   current = start
   while (end - current).days >= 0:
      yield current
      current = current + datetime.timedelta(seconds=1)  

class TweetListener(StreamListener):
    def on_status(self, status):
        #api = tweepy.API(auth_handler=auth)
        #status.created_at += timedelta(hours=900)

        startDate = datetime.datetime(2013, 06, 30)
        stopDate = datetime.datetime(2013, 10, 30)
        for date in date_range(startDate,stopDate):
            status.created_at = date
            print "tweet " + str(status.created_at) +"\n"
            print status.text + "\n"  
            # You can dump your tweets into Json File, or load it to your database

stream = Stream(auth, TweetListener(), secure=True, )
t = u"#Syria" # You can use different hashtags 
stream.filter(track=[t])

输出:

我只是打印了日期进行检查(我不想用政治推文向 StackOverflow 发送垃圾邮件)。

tweet 2013-06-30 00:00:01

-------------------

tweet 2013-06-30 00:00:02

-------------------

tweet 2013-06-30 00:00:03

-------------------

tweet 2013-06-30 00:00:04

-------------------

tweet 2013-06-30 00:00:05

-------------------

tweet 2013-06-30 00:00:06

-------------------

tweet 2013-06-30 00:00:07

-------------------

tweet 2013-06-30 00:00:08

-------------------

tweet 2013-06-30 00:00:09

-------------------
 类似资料:
  • 我有一个非常基本的应用程序,它使用Tweepy的StreamingClient从定义的用户列表中流式发送推文。当他们中的一个人发推特时,我有几个基于关键词的条件来确定我是否应该提醒自己。我希望它将推文的文本和发送人的用户名都发送给我。我可以做前者,但可以知道如何获得用户名。 据我所知,我需要使用扩展,但我是一个完全的新手,不知道如何将它集成到我的代码中,因为大多数关于扩展的文档都在twitter

  • 我正试图建立一个应用程序,用户将能够连接到我的应用程序,在twitter上输入关键字进行搜索,然后结果将被存储在数据库中。从用户输入关键词的那一刻起,我就想跟踪twitter上的内容。这些结果将被进一步分析,一些统计数据将呈现给用户。到目前为止,我已经使用tweppy和twitter流api来获取推文。但是我意识到我不能有一个以上的开放流连接(用于并行搜索多个关键字)。< br >我搜索了stac

  • 问题内容: 我在Stack Exchange上的一个问题中看到,限制可能是每15分钟的请求数的函数,并且还取决于算法的复杂性,只不过这并不复杂。 所以我使用这段代码: 我总是收到Twitter限制错误: 问题答案: 问题在于您的区块放置在错误的位置。将数据插入数据库将永远不会产生-对其进行迭代。我建议重构您的代码以在无限循环中调用方法。该调用应放置在块中,因为它可能引发错误。 代码大致如下所示:

  • 使用Tweepy v2访问推文图片网址的优雅方式是什么?Twitter发布了他们API的v2,Tweepy将他们的python模块调整为它(Tweepy v2)。 举个例子,我有一个tweet的数据帧,用tweet创建,保存tweet id等等https://twitter.com/federalreserve/status/1501967052080394240 图片保存在不同的url下,twe

  • 通常,当我使用twitter流api时,我可以直接从以下位置访问标签: 推特- 当用tweepy搜索关于关键词/标签的推文时,它会下载一个<code> 当我搜索实体/主题标签时,我在作者下找到了第一个(我寻找的)。 推特- 这很奇怪。 “标签”位于 推特- 看起来像这样: 当我试图从 推特- 在循环中: 结果:hashtags是一个空字符串.. 使用时: 推特- 生成此错误: 我记得我最后一次和最

  • 我编写了一个Python脚本,将每条推文中的6个URL上传到Twitter。我使用API调用来拉下所有发布的帖子,有效地缩短了我发布到twitters t.co URL的URL。 我的问题是调用没有按时间顺序排列tweet。 在Twitter时间线中,最新的tweet发布在顶部。如果我能从底部读回时间线,我会更喜欢它,这是我第一条推文的开始。 这是我用来从推特上检索我时间轴上推文的代码: 有人知道