Получение данных из Твиттера с помощью Tweepy

Я использую этот код Python, используя Tweepy Library, чтобы получить данные Twitter для определенного хэштега, но вопрос в том, что мне нужно получить определенный период, например, с 30 июня 2013 года по 30 декабря 2013 года. Как я могу это сделать?

#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 ответ

Я все еще исследую, почему я не мог получить те же результаты, используя tweepy.Cursor(api.search, geocode=.., q=query, until=date ) Может быть, по этой причине. Но я мог бы получить данные из Твиттера, используя Tweepy между двумя датами 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

Затем я создал Listener так что я могу получить твиты, созданные в определенный день, открыв 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])

Выход:

Я только напечатал даты, чтобы проверить (я не хочу спамить Stackru с политическими твитами).

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

-------------------
Другие вопросы по тегам