从文件加载`status`对象?

时间:2015-12-14 10:14:43

标签: python tweepy

几个月前,我开始从twitter上抓取Tweets进行数据分析项目。我使用Tweepy和python3.3来获取状态对象并将它们转储到一个文件中,每天一个文件。

我主要是这样做的,因为我只想快速收集数据,但是我遇到了这个问题:

由于状态对象现在是字符串,我无法使用tweepy将它们转换回来 - 据我所知 - 通过从我的文件中加载它们。

这很糟糕,因为我现在意识到我真的只需要对象的status._json部分。无论出于何种原因,我在3个月前就想到了。

我的问题是:

是否有一种已知的方法可以将这些status对象从字符串转换回来?

我已经检查了Tweepy个文档并用Google搜索过,我很确定这是不可能通过给定的工具实现的。

我能看到的唯一选择是手动拆分字符串,这看起来很难看。

保存在我的文件中的状态对象的

示例
pastebin

每行存储一次,只需在每次从twitter抓取一个新文件时将它们附加到文件中。

1 个答案:

答案 0 :(得分:1)

这不是你期待的答案,但可能会给出一个起点。

我拿了一个Status记录的实例,把它放在text file中,然后运行这个脚本:

# coding: utf-8

with open('status.txt') as f:
    tco = f.read()

import re
re.compile("(?P<key>\w+)=(?P<value>\w+)")
expre = re.compile("(?P<key>\w+)=(?P<value>\w+)")
pairs = dict(re.findall(expre, tco))

这给你这样的东西:

{'author': 'User',
 'contributors': 'None',
 'contributors_enabled': 'False',
 'coordinates': 'None',
 'created_at': 'datetime',
 'default_profile': 'True',
 'default_profile_image': 'False',
 'favorite_count': '0',
 'favorited': 'False',
 'favourites_count': '46',
 'follow_request_sent': 'None',
 'followers_count': '204',
 'following': 'False',
 'friends_count': '274',
 'geo': 'None',
 'geo_enabled': 'True',
 'id': '652242063048724480',
 'in_reply_to_screen_name': 'None',
 'in_reply_to_status_id': 'None',
 'in_reply_to_status_id_str': 'None',
 'in_reply_to_user_id': 'None',
 'in_reply_to_user_id_str': 'None',
 'is_quote_status': 'False',
 'is_translator': 'False',
 'listed_count': '91',
 'location': 'None',
 'notifications': 'None',
 'place': 'None',
 'possibly_sensitive': 'False',
 'profile_background_tile': 'False',
 'profile_use_background_image': 'True',
 'protected': 'False',
 'retweet_count': '0',
 'retweeted': 'False',
 'statuses_count': '9724',
 'truncated': 'False',
 'user': 'User',
 'utc_offset': '7200',
 'verified': 'False'}

现在显然,这缺少了我的简单正则表达式无法解析的大量信息。例如,User个对象属性。一些json也说。

对于手头问题中的更复杂的事情,我建议您研究parser模块。我会在空闲时间看到我能做些什么来解决这个问题。好像是一个很好的问题。