簡體   English   中英

通過tweepy獲取推文

[英]Getting tweets by date with tweepy

我從USATODAY獲得了最大量的推文,這是3000。

現在我想創建一個腳本,以便在每天晚上11:59自動提取USATODAY的推文。

我打算使用流api然后我將不得不讓它保持運行一整天。

我是否可以了解如何創建一個腳本,每天晚上11:59運行REST API以獲取當天的推文? 如果沒有,是否有人知道如何根據日期提取推​​文?

我正在考慮在我的for循環中放置一個ifelse語句,但這似乎效率低下,因為它必須每晚搜索3000條推文。

這就是我現在擁有的:

client = MongoClient('localhost', 27017)
db = client['twitter_db']
collection = db['usa_collection']
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token_key, access_token_secret)

api = tweepy.API(auth)

for tweet in tweepy.Cursor(api.user_timeline,id='USATODAY').items():
    collection.insert(tweet._json)

您可以在頁面的幫助下簡單地檢索推文,現在在每個頁面上接收到您對推文進行迭代並提取使用tweet.created_at訪問的推文的創建時間,您可以找到提取日期和當前之間的差異日期,如果差異小於1天,那么它是一個有利的推文,否則你只是退出循環。

import tweepy, datetime, time

def get_tweets(api, username):
    page = 1
    deadend = False
    while True:
        tweets = api.user_timeline(username, page = page)

        for tweet in tweets:
            if (datetime.datetime.now() - tweet.created_at).days < 1:
                #Do processing here:

                print tweet.text.encode("utf-8")
            else:
                deadend = True
                return
        if not deadend:
            page+=1
            time.sleep(500)

get_tweets(api, "anmoluppal366")

注意:您沒有訪問該人的所有3000條推文,您只會迭代在啟動應用程序時 24小時內創建的推文。

其他方法:

def search(target, date, maxnum = 10):
    cursor = tweepy.Cursor(
        api.search,
        q = target,
        since = date[0],
        until = date[1],
        show_user = True)

    return cursor.items(maxnum)

if __name__ == '__main__':
    list_tweets = search(
    target = '서지수',
    date = ('2016-05-01', '2016-05-25'),
    maxnum = 100)
    print(list_tweets)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM