使用 tweepy 按日期获取推文
Getting tweets by date with tweepy
我从 USATODAY 中提取了允许的最大推文数量,即 3000。
现在我想创建一个脚本来在每天 11:59PM 自动提取今日美国的推文。
我本来打算使用流 api,但后来我不得不 运行 一整天。
我能否深入了解如何创建一个脚本,让它每晚在 11:59PM 运行 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)
我从 USATODAY 中提取了允许的最大推文数量,即 3000。
现在我想创建一个脚本来在每天 11:59PM 自动提取今日美国的推文。
我本来打算使用流 api,但后来我不得不 运行 一整天。
我能否深入了解如何创建一个脚本,让它每晚在 11:59PM 运行 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)