2017-05-30 133 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旁邊的列中?

  • 如何添加count-break,因爲:twitter API只允許一次搜索100個用戶...... [so]你需要做的是循環訪問每個100個用戶,但留下來在速率限制內。

道歉,如果這是超級基礎,並提前感謝任何幫助!

+0

回答你所有的問題是肯定這是可能的,但我需要一些澄清。當我運行你的代碼時,我得到兩行輸出,每一行輸出爲''(例如:'kevin mcsheehan 508')。你是什​​麼意思「打印在ID旁邊的列」?什麼專欄,什麼是ID? – davedwards

+0

至於從文件中讀取文件,在你的python腳本的相同位置創建一個文件,比如說'targets.txt',每行一個ID,然後用這兩行替換'target for target:'的行:'打開('targets.txt','r')作爲目標: 針對target.readlines():' – davedwards

+0

謝謝你。關於您的第一個問題(並使用相同的示例),我希望將結果打印在一個csv文件中,然後我可以將其導出到Google表格或Excel。所以理想情況下,我會從一個csv文件開始,比方說A列中有100個用戶名。然後,我將運行腳本在相關用戶名旁邊的列B中打印跟隨者計數。所以輸出將是一個csv文件,在單元格A1中有「kevin_mcsheehan」,在B1中有508。那有意義嗎? – 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

這工作。謝謝@downshift! – Armand

相關問題