我第一次使用Tweepy并且我是Python新手。 我在OAuth之后使用以下代码来使用Tweepy收集推文:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
file = open('SOTU1.txt', 'a')
class CustomStreamListener(tweepy.StreamListener):
def on_status(self, status):
print status.text
def on_data(self, data):
json_data = json.loads(data)
file.write(str(json_data))
def on_error(self, status_code):
print >> sys.stderr, 'Encountered error with status code:', status_code
return True # Don't kill the stream
def on_timeout(self):
print >> sys.stderr, 'Timeout...'
return True # Don't kill the stream
结果文本文件如下所示,并作为一个字符串对象继续:
{u'contributors': None, u'truncated': False, u'text': u'Lost my cool today
\U0001f602\U0001f63e like completely', u'in_reply_to_status_id': None, u'id':
557709279751581696, u'favorite_count': 0, u'source': u'<a
href="http://twitter.com/download/android" rel="nofollow">Twitter for
Android</a>', u'retweeted': False, u'coordinates': {u'type': u'Point',
u'coordinates': [-97.925459, 29.877993]}, u'timestamp_ms': u'1421803228687',
u'entities': {u'user_mentions': [], u'symbols': [], u'trends': [],
u'hashtags': [], u'urls': []}, u'in_reply_to_screen_name': None, u'id_str':
u'557709279751581696', u'retweet_count': 0, u'in_reply_to_user_id': None,
u'favorited': False, u'user': {u'follow_request_sent': None,
u'profile_use_background_image': True, u'default_profile_image': False, u'id':
1239731318, u'verified': False, u'profile_image_url_https':
我尝试过在网站上提供的各种解决方案,虽然没有工作,因为它不是列表,而是字符串。我试图通过删除&#34; u&#39;&#34;来使其成为字典形式,但该对的右侧有未被&#34;&#34;包围的单词。
我的目标是从每条推文中提取文本和地理编码,我希望使用jq在bash中处理JSON文件。但截至目前,我无法将此数据提供给jq,并且很难确定哪一行来自一条推文。
提前致谢!
答案 0 :(得分:0)
def on_data(self, data):
json_data = json.loads(data)
json.dump(json_data,my_file)
然后当你想要它回来
json_data = json.load(open("file.txt"))