通过tweepy获取推文

时间:2015-05-21 00:35:19

标签: python twitter 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)

2 个答案:

答案 0 :(得分:9)

您可以在页面的帮助下简单地检索推文。现在,在每个页面上,您都会通过推文进行迭代,并提取使用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>小时内创建的那些推文。

答案 1 :(得分:0)

其他方法:

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)