我试图使用Python从Twitter创建转发/提交网络,并且我已经能够随时找到很多内容。除了,我已经开始测试我的代码从一个小样本到一个更大的样本,我得到了一个我不明白的奇怪的KeyError。我确定我可能遗漏了一些简单的东西,但是我们将非常感谢任何帮助。
通过推文读取目标并在用户之间创建关系,如果首先一个用户转发另一个用户,那么,如果没有转发,则在一个用户之间创建一个关系(包括在一个用户中的多个提及单个推文)。如果存在转发或提及,请仅打印推文作者。
我得到的错误如下:
Traceback (most recent call last):
File "...path/to/file.py", line 28, in <module>
print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , "TWEET"
KeyError: 'user'
代码:
import json
import time
data = []
for line in open('tweets.json'):
try:
data.append(json.loads(line))
except:
pass
tweet = data[0]
tweet_time = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))
for tweet in data:
## if the key 'retweeted_status' is in the dict, print
if tweet.has_key('retweeted_status'):
print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , tweet['retweeted_status']['user']['screen_name'] , "\t" , "RETWEET"
## if there is a mention in the dict, print
elif 'entities' in tweet and len(tweet['entities']['user_mentions']) > 0:
for u2 in tweet['entities']['user_mentions']:
print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , u2['screen_name'] , "\t" , "MENTION"
## if there is no retweet and no mention, print
else:
print tweet_time , "\t" , tweet['user']['screen_name'] , "\t" , "\t" , "TWEET"