【问题标题】:how to display tweets of particular time period using twitter api如何使用 twitter api 显示特定时间段的推文
【发布时间】:2013-04-29 07:14:08
【问题描述】:

我的要求是使用 twitter api 显示特定时间段的推文。我正在使用 API 的 getsearch 方法来获取所有推文,我尝试使用以下代码显示特定时间段的推文。

Three_days_ago = datetime.datetime.utcnow()-datetime.timedelta(days = 3)
for tweet in tweets:
    if tweet.created_at > Three_days_ago:
        print tweet

但我收到错误'can't compare datetime.datetime to unicode' 如何做到这一点请建议我..

【问题讨论】:

  • tweet.created_at 不是datetime,它是文本
  • 发布tweet.create_at。
  • 感谢您的回复,tweet.created_at 看起来像 Mon, 29 Apr 2013 01:12:50 +0000 我如何将我的 tweet.create_at 转换为日期时间格式。

标签: python parsing datetime twitter


【解决方案1】:

您可以使用dateutil。

from dateutil import parser


Three_days_ago = datetime.datetime.utcnow()-datetime.timedelta(days = 3)
for tweet in tweets:
    tweeted_datetime = parser.parse(tweet.created_at)
    if tweeted_datetime > Three_days_ago:
        print tweet, tweeted_datetime.strftime("%Y-%m-%d %H:%M:%S %p")

我不确定您能否获得毫秒数,因为它在解析时没有传递。更多strftime选项请参考here。

【讨论】:

  • 感谢您的回复有没有办法将这种格式的日期“Mon, 29 Apr 2013 01:12:50 +0000”转换为“2013-04-29 01:12:50.784572”请建议我。
  • 感谢代码的工作,但我们得到单引号的输出('2013-04-29 01:12:50 AM'),但我的要求是将其与 2013-04- 进行比较29 上午 01:12:50(不含引号)。那么如何获取不带引号的日期。
  • 当它带有引号时,它是字符串。当它带有u'' 时,它是unicode。我很确定您的 2013-04-29 01:12:50 AM 将是字符串或 unicode。所以比较应该有效。
  • 这一行 datetime.datetime.utcnow()-datetime.timedelta(days = 3) 的输出是 datetime.datetime 格式,所以当我将其与 ('2013-04-29 01 :12:50 AM') 它给出了错误,因为无法将 datetime.datetime 与 str 进行比较。
【解决方案2】:

正如@jamylak 所说,tweet.created_at 是文本而不是日期时间。

您可以根据此处给出的规则将其转换为日期时间:http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 2013-08-19
    • 1970-01-01
    • 2011-03-30
    • 2012-04-18
    • 2018-12-25
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多