【问题标题】:Twitter Streaming API: output has data without tweet textTwitter Streaming API:输出有没有推文文本的数据
【发布时间】:2017-08-27 17:56:16
【问题描述】:

我正在使用本教程中给出的代码: http://adilmoujahid.com/posts/2014/07/twitter-analytics/

目的是使用 Twitter Streaming API 收集数据,以 JSON 格式存储数据,然后从这些数据中获取推文。在教程的第二步,它使用以下代码来获取推文:

tweets_data = []
tweets_file = open(tweets_data_path, "r")
for line in tweets_file:
    try:
        tweet = json.loads(line)
        tweets_data.append(tweet)
    except:
        continue

tweets = pd.DataFrame()
tweets['text'] = map(lambda tweet: tweet['text'], tweets_data[0:2377])

我在 DataFrame 推文中使用了 tweets_data 的子集。但是,在 tweets_data 的索引 2376 处,它没有包含有关推文及其文本的数据,而是:

{u'limit': {u'track': 4, u'timestamp_ms': u'1491153253907'}

因此,使用 tweets_data[0:2377] 返回 KeyError: 'text'。索引 2376 处的字典元素不像其他元素那样具有 u'text';使用索引 2376 以下的任何子集都可以。但是,我不能只跳过 2376,因为我的 JSON 数据中有更多类似的元素。使用 tweets_data[0:2377] + tweets_data[2377:len(tweets_data)] 也会返回 KeyError: 'text'。

那么元素 2376 发生了什么?在数据框中创建“文本”列之前,我应该只过滤掉没有 u'text' 的元素吗?还是有更好的办法?

【问题讨论】:

    标签: python json pandas twitter twitter-streaming-api


    【解决方案1】:

    该元素看起来像 api 调用的日志数据。

    只需在存储每一行​​之前检查文本,如下所示:

    if 'text' in tweet:
        tweets_data.append(tweet)
    

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 1970-01-01
      • 2020-10-25
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2011-08-22
      相关资源
      最近更新 更多