2016-10-03 10 views
0

Twitterのデータを分析したい。一部のツイートをダウンロードして.txtファイルに保存しました。ツイートをPython辞書に保存する

私はつぶやきデータから有用な情報を抽出しようとすると私のような初心者のために、つぶやきを抽出することは非常に難しいと思われるので、私はどんな進歩を遂げることができませんでした、場所など

グーグルながら私が見つからjsonを辞書に変換すると、情報を簡単に抽出できます。

今、JSONデータをPython辞書に変換したいと考えています。私はどのように進むべきかわかりません。ここで

ツイートに

import tweepy 
import json 
import jsonpickle 

consumer_key = "*********" 
consumer_secret = "*******" 

access_token = "************" 
access_token_secret = "**********" 

auth = tweepy.AppAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 


# It make the Tweepy API call auto wait (sleep) when it hits the rate limit and continue upon expiry of the window. 
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) 

if (not api): 
    print ("Can't Authenticate") 
    sys.exit(-1) 


searchQuery = 'SomeHashtag' 
maxTweets = 10000000 # Some arbitrary large number 
tweetsPerQry = 100 
fName = 'file.txt' 

sinceId = None 
max_id = "Latest tweet ID" 

tweetCount = 0 
print("Downloading max {0} tweets".format(maxTweets)) 
with open(fName, 'a') as f: 

    while tweetCount < maxTweets: 
     try: 
      if (max_id <= 0): 
       if (not sinceId): 
        new_tweets = api.search(q=searchQuery, lang ="en", count=tweetsPerQry) 

       else: 
        new_tweets = api.search(q=searchQuery, lang ="en", count=tweetsPerQry, 
             since_id=sinceId) 
      else: 
       if (not sinceId): 
        new_tweets = api.search(q=searchQuery, lang ="en", count=tweetsPerQry, 
             max_id=str(max_id - 1)) 
       else: 
        new_tweets = api.search(q=searchQuery, lang ="en", count=tweetsPerQry, 
             max_id=str(max_id - 1), 
             since_id=sinceId) 

      if not new_tweets: 
       print("No more tweets found") 
       break 
      for tweet in new_tweets: 
       f.write(jsonpickle.encode(tweet._json, unpicklable=False) + '\n') 

      tweetCount += len(new_tweets) 
      print("Downloaded {0} tweets".format(tweetCount)) 
      max_id = new_tweets[-1].id 
     except tweepy.TweepError as e: 
      # Just exit if any error 
      print("some error : " + str(e)) 
      break 

    print ("Downloaded {0} tweets, Saved to {1}".format(tweetCount, fName)) 
+1

.txtファイルの外観はどうですか? –

+0

質問の文法を編集しました。それが明確であることを確認してください。要求された情報を追加してください:txtファイルの内容とテストできるように十分なコード。 –

答えて

0

を保存するために使用されるコードであるあなたがちょうどラインで、あなたのファイルの行を読んで、jsonpickle.decode方法使用してそれをunpickle化することができそうです:

tweets = [] 
with open(filename) as f: 
    for line in f: 
     tweets.append(jsonpickle.decode(line)) 

をそして、私はあなたがバイパスすることができると思いますサードパーティ製のライブラリ:

import json 
with open(filename, 'w') as f: 
    for tweet in new_tweets: 
     f.write(json.dumps(tweet) + '\n') 

tweets = [] 
with open(filename) as f: 
    for line in f: 
     tweets.append(json.loads(line)) 
+0

jsonpumpsの代わりにjson.dumps()を使ってつぶやきをダウンロードしようとしたときに、エラーウィンドウに「JSONのシリアル化ができません」というエラーが表示されます – Khurshid

関連する問題