【问题标题】:Twitter API - follower count for numerous usersTwitter API - 众多用户的关注者数量
【发布时间】:2017-05-30 22:21:54
【问题描述】:

我是 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 旁边的列中打印每个目标的关注者数量吗?

  • 如何添加 count-break 因为:twitter API 一次只允许搜索 100 个用户...[所以] 你需要做的是遍历每 100 个用户,但是保持在速率限制内。

抱歉,如果这是超级基本的,并提前感谢您的帮助!

【问题讨论】:

  • 对你所有问题的回答是肯定的,这是可能的,但我需要澄清一下。当我运行您的代码时,我得到两行输出,每行为<user.name> <user.followers_count>,(例如:kevin mcsheehan 508)。您是什么意思“在 ID 旁边的列中打印出来”?哪一列,ID 是什么?
  • 对于从文件中读取,在与您的python脚本相同的位置创建一个文件,例如targets.txt,每行一个ID,然后将for target in targets:行替换为这两行: with open('targets.txt', 'r') as targets: for target in targets.readlines():
  • 谢谢你。关于您的第一个问题(并使用相同的示例),我希望将结果打印在 csv 文件中,然后我可以将其导出到 Google Sheets 或 Excel。因此,理想情况下,我会从一个 csv 文件开始,假设 A 列中有 100 个用户名。然后我将运行脚本以在相关用户名旁边的 B 列中打印关注者计数。所以输出将是一个 csv 文件,在单元格 A1 中带有“kevin_mcsheehan”,在 B1 中带有 508。这有意义吗?
  • 是的,这是有道理的,谢谢。好的,这将写入 csv 文件拆分 usernamefollowers_count 在列 AB: with open('targets.txt', 'r') as targets_file: with open('output.csv', 'wb') as outcsv: outfile = csv.writer(outcsv) for target in targets_file.readlines(): user = api.get_user(target.strip()) outfile.writerow([user.name.lower(), user.followers_count])

标签: python twitter-bootstrap twitter tweepy


【解决方案1】:

总结cmets中的讨论:

# -*- 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

【讨论】:

猜你喜欢
  • 2013-07-01
  • 2021-11-25
  • 2017-10-23
  • 2012-07-20
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多