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)
我正在使用本教程中给出的代码: 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)