以可用形式(JSON)提取Tweepy中的数据

时间:2016-02-06 15:56:10

标签: python json tweepy

我正在使用Tweepy来收集关注者的数据。我能够打印返回的数据,但无论我尝试什么,我都无法以可重复使用的形式将数据保存到文件中。

下面是我成功导出到txt文件的方法,但是当我将该文件称为变量时,它会设置一个字符数组,并且不会将其视为可用数组。

这是Tweepy电话:

import sys
import tweepy
import json

# Key info removed

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)

ids = []
for page in tweepy.Cursor(api.followers, screen_name="handle").pages():
    ids.extend(page)
print ids

with open("followers.txt", 'w') as f:
    f.write(str(ids))

我从中获得的是一个开始的文件:

[User(follow_request_sent=False... 

如果我用

调用数据
data = f.read()
print data[0]  # returns '['

2 个答案:

答案 0 :(得分:1)

您可以先使用

保存文件
f.close()

它会将您的数据保存到文件中,然后您可以使用此

import json
from pprint import pprint

with open('followers.txt') as new_file:    
    new_file = json.load(new_file)

pprint(data)

并且您可以参考原始python文档here以查看有关在python中读取文件中的方法的更多信息。

希望它可能有所帮助!

答案 1 :(得分:1)

每个page都是listUser个对象。因此,当您:ids.extend(page)

时,您将失去数据结构

尝试以下代码:

with open("followers.txt", 'a') as f:     #open file first
    for page in tweepy.Cursor(api.followers, screen_name='handle').pages():
        for user_obj in page:   #iterate through each User object
            json.dump(user_obj._json, f)  #dump each to file, f
            f.write("\n")  #you'll need this for Martjin's answer below to work.

感谢Martjin Pieter对this question的回答。您可以加载和离散访问您的数据。我修改其代码段的方式是将jfile附加到名为user_jsons的列表中(这相当于您的data变量)。

user_jsons = []
with open("followers.txt", 'rb') as f:
    for line in f:
        while True:
            try:
                jfile = json.loads(line)
                break
            except ValueError:
                # Not yet a complete JSON value
                line += next(f)
        user_jsons.append(jfile)

现在你有一个json对象列表...... [7]被截断

In [7]: user_jsons[0]
Out[7]: {u'blocked_by': False,
          u'blocking': False,
          u'contributors_enabled': False,
          u'created_at': u'Thu Jan 30 18:33:13 +0000 2014',
          ...

In [8]: user_jsons[0]['screen_name']
Out[8]: u'some_users_handle'

您可能会发现ipython notebooks here是一个非常有用的资源,特别是第9章。