Twitter Streaming API:输出包含没有推文文本的数据

Twitter Streaming API: output has data without tweet text

我正在使用本教程中给出的代码: 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] returns KeyError: 'text'。索引 2376 处的字典元素不像其他元素那样具有 u'text';使用索引 2376 以下的任何子集都有效。但是,我不能只跳过 2376,因为在我的 JSON 数据中有更多类似的元素。使用 tweets_data[0:2377] + tweets_data[2377:len(tweets_data)] 也 returns KeyError: 'text'.

那么 2376 号元素发生了什么?在数据框中创建 'text' 列之前,我是否应该只过滤掉其中没有 u'text' 的元素?或者有更好的方法吗?

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

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

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