使用python库Tweepy,如何在两个给定日期之间收集一定数量的tweet?

2024-10-02 00:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在做一个项目,在这个项目中,我需要收集两个给定日期之间的tweet,我为此奋斗了一段时间

我有一个简单的twitter开发者帐户,所以首先你认为有这样一个帐户是可能的吗

我在Tweepy的文档中看到,我们可以在最后7天收集一定数量的推文。但即使我在最后7天尝试了两次约会,我也没有得到正确的回报

以下是我的功能:

def scrapping_de_tweets(mots_cles, date_debut, date_fin, nombre_de_tweets):
    
    bd_tweets = pd.DataFrame(columns = ['date_tweet', 'lieu', 'texte'])
    
    heure_debut = time.time()
    
    tweets = tweepy.Cursor(api.search, q=mots_cles, since=date_debut, until=date_fin, lang="fr", tweet_mode='extended').items(nombre_de_tweets)
    
    liste_de_tweets = [tweet for tweet in tweets]
    
    nbTweets = 0
    for tweet in liste_de_tweets :
        
        date_tweet = tweet.user.created_at
        lieu = tweet.user.location
        
        try:
            text = tweet.retweeted_status.full_text
        except AttributeError:  # Pas un Retweet
            text = tweet.full_text
                
        ith_tweet = [date_tweet, lieu, text]
            
        # Rajout à la base de données
        bd_tweets.loc[len(bd_tweets)] = ith_tweet
          
        nbTweets += 1
            
    heure_fin = time.time()
    
    duree = round((heure_fin- heure_debut)/60, 2)
    
    print('Le nombre de tweets scrappés est {}'.format(nbTweets))
    print('Le temps nécessaire a été {} mins'.format( duree ))
    
    from datetime import datetime
    
    # Obtenir l'horodatage dans un format lisible
    to_csv_horodatage = datetime.today().strftime('%Y%m%d_%H%M%S')
   
    # Chemin du repertoire courant
    chemin_courant = os.getcwd()
    
    nom_fichier = chemin_courant + '\\donnees\\' + date_fin + '_' + to_csv_horodatage + 'tweets_pollution.csv'
    
    # Stockage de la DataFrame dans un fichier csv 
    bd_tweets.to_csv(nom_fichier, index = False)
    
    print('Scraping terminé!')
    
    print(bd_tweets.describe())
        
# Initialisation des paramètre d'entrées:
mots_cles = "#france"
date_debut = "2020-12-31"
date_fin = "2021-01-04"
nombre_de_tweets = 500
# Appel de la fonction

scrapping_de_tweets(mots_cles,date_debut, date_fin, nombre_de_tweets)
    

这是我得到的

Le nombre de tweets scrappés est 500
Le temps nécessaire a été 0.53 mins
Scraping terminé!
                 date_tweet  ...                                              texte
count                   500  ...                                                500
unique                  436  ...                                                196
top     2009-06-20 16:46:46  ...  🇫🇷 FLASH - 12 489 cas de #COVID19 ont été déte...
freq                      6  ...                                                 82
first   2007-06-25 20:38:51  ...                                                NaN
last    2021-01-03 21:45:34  ...                                                NaN

如你所见,我不仅收到2021年的推文,还收到2007年或2009年的一些非常老的推文。这怎么可能呢

请帮助我了解我的代码有什么问题,或者tweepy是如何工作的

提前谢谢


Tags: csvtextdatetimedebdtweetstweet

热门问题