几个月前,我开始从twitter上抓取Tweets进行数据分析项目。我使用Tweepy和python3.3来获取状态对象并将它们转储到一个文件中,每天一个文件。
我主要是这样做的,因为我只想快速收集数据,但是我遇到了这个问题:
由于状态对象现在是字符串,我无法使用tweepy将它们转换回来 - 据我所知 - 通过从我的文件中加载它们。
这很糟糕,因为我现在意识到我真的只需要对象的status._json
部分。无论出于何种原因,我在3个月前就想到了。
我的问题是:
是否有一种已知的方法可以将这些status
对象从字符串转换回来?
我已经检查了Tweepy
个文档并用Google搜索过,我很确定这是不可能通过给定的工具实现的。
我能看到的唯一选择是手动拆分字符串,这看起来很难看。
保存在我的文件中的状态对象的 示例:
pastebin
每行存储一次,只需在每次从twitter抓取一个新文件时将它们附加到文件中。
答案 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
模块。我会在空闲时间看到我能做些什么来解决这个问题。好像是一个很好的问题。