2017-05-30 2 views
3

私はPythonの新機能がすごく便利ですが、Twitter APIにアクセスして、Twitterのハンドル(またはユーザーID - 私は両方のデータセットを持っています)それらをcsvファイルに出力します。私はこれについてかなりの時間を捜しましたが、本当に効果があったものは見つけられませんでした。多くのユーザーのためのTwitter API - フォロワー数

これは私が現在持っているものである:ここ

import tweepy 
import time 
import csv 
import sys 


# Keys, tokens and secrets 
consumer_key = 'REMOVED' 
consumer_secret = 'REMOVED' 
access_token = 'REMOVED' 


access_token_secret = 'REMOVED' 

# Tweepy OAuthHandler 
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 
api = tweepy.API(auth) 

targets = [12345,123456] # All your targets here 

for target in targets: 
    user = api.get_user(target) 
    print(user.name, user.followers_count) 

私の質問は以下のとおりです。

  • は私が事前に読み込まファイル内のすべてのターゲットを持ち、フォロワーが各ターゲット印刷カウント持つことができますIDの横の列には?

  • カウントダウンで追加するには:twitter APIは100人のユーザーしか一度に検索することはできません... [so]あなたがする必要があるのは100人のユーザーごとに繰り返されますが、レート制限内。

これは超基本的なものであり、事前にお手数ですがお詫び申し上げます!コメント欄での議論をまとめると

+0

答えはイエス、それは可能だが、私はいくつかの明確化が必要。あなたのコードを実行すると、 ''という2行の出力が得られます(たとえば 'kevin mcsheehan 508')。 「IDの横の列に印刷する」とはどういう意味ですか?どの列、IDは何ですか? – davedwards

+0

ファイルから読み込む場合は、pythonスクリプトと同じ場所に 'targets.txt'というファイルを作成し、それぞれの行にIDを1つ入れ、' target in target: 'の行を次の2行に置き換えてください:' ' open( 'targets.txt'、 'r')をターゲットとして使用してください。 for targets.readlines(): – davedwards

+0

ありがとうございます。あなたの最初の質問について(そして同じ例を使用して)、結果をCSVファイルに出力してGoogleスプレッドシートまたはExcelに書き出すことができます。だから理想的には、私はcsvファイルから始めるでしょう - 100人のユーザ名をA列に入れましょう。そして、関連するユーザー名の横のB列にフォロワー数を表示するスクリプトを実行します。その結果、出力は、セルA1に「kevin_mcsheehan」、B1に508のcsvファイルになります。それは理にかなっていますか? – Armand

答えて

1

# -*- coding: utf-8 -*- 

from __future__ import unicode_literals 
import tweepy 
import time 
import unicodecsv as csv 
import codecs 
import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

access_token = '' 
access_token_secret = '' 
consumer_key = '' 
consumer_secret = '' 

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 
api = tweepy.API(auth, wait_on_rate_limit=True) 

with open('targets.txt', 'r') as targets_file: 
    targets_list = targets_file.readlines() 

targets_list_filtered = filter(None, targets_list[0].split('\r')) 

targets_list_cleaned = [] 

for item in targets_list_filtered: 
    targets_list_cleaned.append(item.strip('\n')) 

with codecs.open('output.csv', 'wb', 'utf-8') as outcsv: 
    outfile = csv.DictWriter(outcsv, encoding='utf-8', fieldnames=['uID', 'Username', 'Follower Count', 'Verified']) 
    outfile.writeheader() 

    for idx, target in enumerate(targets_list_cleaned): 
     try: 
      user = api.get_user(target) 
      outfile.writerow({'uID': target, 'Username': user.name, 'Follower Count': user.followers_count, 'Verified': user.verified}) 
      print idx, target, user.name, user.followers_count, user.verified 
     except tweepy.TweepError as e: 
      # outfile.writerow(e.message) 
      print idx, target, e.message 

targets.txtファイルの内容:すべてのご質問

99795204 
973058420 
988290763 
984965461 
973058420 
97074741 
969892964 
968396750 
+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/145813/discussion-on-answer-by-downshift-twitter-api-follower-count-for-numerous-user)。 –

+0

これは機能しました。ありがとう@ダウンシフト! – Armand

関連する問題