2017-10-13 7 views
-1

semble qu'avec tweepy je peux obtenir seulement 200 tweets en utilisant la méthode user_timeline.tweepy api.user_timeline: nombre limité à 200

class Twitter_User(): 
    def __init__(self,id,count=200): 
     self.id = id 
     self.count = count 
     self.data = None 
    def get_tweets(self): 
     store_tweets = api.user_timeline(self.id, count=self.count) 
     simple_list = [] 
     for status in store_tweets: 
      array = [status._json["text"].strip(), status._json["favorite_count"], status._json["created_at"],status._json["retweet_count"],[h["text"] for h in status._json["entities"]["hashtags"]]] 
      simple_list.append(array) 
     self.data = pd.DataFrame(simple_list, columns=["Text", "Like", "Created at","Retweet","Hashtags"]) 
     self.data = self.data[~self.data["Text"].str.startswith('RT')] 
     return self.data 
    def __repr__(self): 
     id = api.get_user(self.id) 
     return id.screen_name 

si je mets comme self.count un nombre plus grand que 200, je toujours obtiendrez une trame de données avec 200 lignes, insted si je mets un plus petit nombre, je reçois la bonne quantité de lignes. Je ne sais pas, il y a une limite ou je dois utiliser une autre méthode?

Répondre

1

Vous ne pouvez obtenir un maximum de 200 tweets. Cependant, vous pouvez effectuer des demandes successives pour les tweets plus anciens. Le nombre maximal de tweets que vous pouvez obtenir dans une timeline est 3200. La référence est here.

Vous pouvez le faire avec tweepy mais vous aurez besoin de tweepy's Cursor obtenir ces pages successives de tweets. Regardez this pour vous aider à démarrer.

1

Selon les Twitter API docs le plus de disques que vous pouvez extraire de /statuses/user_timeline/ est de 200

De la définition du paramètre de comptage:

Indique le nombre de Tweets pour essayer de récupérer, jusqu'à un maximum de 200 par demande distincte. La valeur de count est mieux considérée comme une limite au nombre de Tweets à renvoyer car le contenu suspendu ou supprimé est supprimé après l'application du nombre. Nous incluons les retweets dans le compte, même si include_rts n'est pas fourni. Il est recommandé d'envoyer toujours include_rts = 1 lors de l'utilisation de cette méthode API.

Et de la tweepy source code en ligne api.py 114: dans une requête

@property 
def user_timeline(self): 
    """ :reference: https://dev.twitter.com/rest/reference/get/statuses/user_timeline 
     :allowed_param:'id', 'user_id', 'screen_name', 'since_id', 'max_id', 'count', 'include_rts' 
    """ 
    return bind_api(
     api=self, 
     path='/statuses/user_timeline.json', 
     payload_type='status', payload_list=True, 
     allowed_param=['id', 'user_id', 'screen_name', 'since_id', 
         'max_id', 'count', 'include_rts'] 
    )