Задать вопрос

Как вытащить из API Twetter данные о #хештеге в определенный период времени в Python?

Друзья, пользуюсь Ipython,API тащу через Tweepy.На днях появилась необходимость узнать данные о хештеге годовой давности,облазил инет,нашел коды,но не рабочие.В итоге натнкулся на этот

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])


В итоге ошибка: TypeError: an integer is required (got type str)
Почему не могу понять str прописан,почему он отказывается его видеть?
Заранее Всем большое спасибо за помощь.
Если у Вас есть ссылки как можно тащить дату такого рода,поделитесь пожалуйста)
  • Вопрос задан
  • 658 просмотров
Подписаться 4 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@Firik67
Middle PHP Developer
Как минимум, потому что это код для 2 версии питона, а вы его запускаете на версии 3.4. Также, в трейсбэке указано
startDate=datetime.datetime('2015-06-30')
А в 3.4 на вход функции datetime нужно подавать числа, разделенные запятой. И лучше внести весь этот код в файл .py и запускать сам файл, а не через ipython. Да, и ошибка указывает на то, что аргумент должен быть числом, а не строкой.
Вот такой вариант на 3 версии у меня работает:

import datetime

startdate = datetime.datetime(2013, 10, 6)
enddate = datetime.datetime(2013, 11, 6)

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


for date in date_range(startdate, enddate):
    created_at = date
    print("tweet " + str(created_at) +"\n")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы