Twitter API - 众多用户的关注者数量
Twitter API - follower count for numerous users
我是 Python 的超级新手,但我正在尝试访问 Twitter API 以获取关注者数量以获得 Twitter 用户名列表(或用户 ID - 我都有)数据集)并将它们打印到 csv 文件。我为此搜索了很长时间,但没有找到任何真正有效的方法。
这是我目前拥有的:
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 旁边的列中打印出每个目标的关注者数量?
我如何添加中断计数因为:推特 API 一次只允许搜索 100 个用户...[所以] 你需要什么do 是迭代每 100 个用户,但保持在速率限制内。
抱歉,如果这是超级基本的,请提前感谢您的帮助!
总结评论中的讨论:
# -*- 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
我是 Python 的超级新手,但我正在尝试访问 Twitter API 以获取关注者数量以获得 Twitter 用户名列表(或用户 ID - 我都有)数据集)并将它们打印到 csv 文件。我为此搜索了很长时间,但没有找到任何真正有效的方法。
这是我目前拥有的:
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 旁边的列中打印出每个目标的关注者数量?
我如何添加中断计数因为:推特 API 一次只允许搜索 100 个用户...[所以] 你需要什么do 是迭代每 100 个用户,但保持在速率限制内。
抱歉,如果这是超级基本的,请提前感谢您的帮助!
总结评论中的讨论:
# -*- 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