首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Tweepy获取Twitter中的所有关注者ID

通过Tweepy获取Twitter中的所有关注者ID
EN

Stack Overflow用户
提问于 2013-07-03 01:15:58
回答 4查看 44.5K关注 0票数 29

有没有可能获得像麦当劳这样拥有超过一百万粉丝的账号的完整粉丝列表?

我使用Tweepy并遵循以下代码:

代码语言:javascript
复制
c = tweepy.Cursor(api.followers_ids, id = 'McDonalds')
ids = []
for page in c.pages():
     ids.append(page)

我也尝试这样做:

代码语言:javascript
复制
for id in c.items():
    ids.append(id)

但是我总是得到‘超过速率限制’的错误,并且只有5000个追随者ids。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-05 22:05:34

为了避免速率限制,您可以/应该在下一次关注页面请求之前等待。看起来很老套,但很管用:

代码语言:javascript
复制
import time
import tweepy

auth = tweepy.OAuthHandler(..., ...)
auth.set_access_token(..., ...)

api = tweepy.API(auth)

ids = []
for page in tweepy.Cursor(api.followers_ids, screen_name="McDonalds").pages():
    ids.extend(page)
    time.sleep(60)

print len(ids)

希望这能有所帮助。

票数 48
EN

Stack Overflow用户

发布于 2016-07-23 07:36:23

建立连接时使用速率限制参数。api会在速率限制内自行控制。

睡眠暂停不是很糟糕,我用它来模拟一个人,并在api速率限制作为最终控制的情况下,在一段时间内展开活动。

代码语言:javascript
复制
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True, compression=True)

另外,添加try/except来捕获和控制错误。

示例代码https://github.com/aspiringguru/twitterDataAnalyse/blob/master/sample_rate_limit_w_cursor.py

我把我的钥匙放在一个外部文件中,以便于管理。

https://github.com/aspiringguru/twitterDataAnalyse/blob/master/keys.py

票数 27
EN

Stack Overflow用户

发布于 2019-08-31 20:18:11

我使用这段代码,它适用于大量的关注者:有两个函数,一个用于在每个睡眠周期后保存关注者的id,另一个用于获取列表:它有点混乱,但我希望有用。

代码语言:javascript
复制
def save_followers_status(filename,foloowersid):
    path='//content//drive//My Drive//Colab Notebooks//twitter//'+filename
    if not (os.path.isfile(path+'_followers_status.csv')):
      with open(path+'_followers_status.csv', 'wb') as csvfile:
        filewriter = csv.writer(csvfile, delimiter=',')


    if len(foloowersid)>0:
        print("save followers status of ", filename)
        file = path + '_followers_status.csv'
        # https: // stackoverflow.com / questions / 3348460 / csv - file - written -with-python - has - blank - lines - between - each - row
        with open(file, mode='a', newline='') as csv_file:
            writer = csv.writer(csv_file, delimiter=',')
            for row in foloowersid:
                writer.writerow(np.array(row))
            csv_file.closed

def get_followers_id(person):
    foloowersid = []
    count=0

    influencer=api.get_user( screen_name=person)
    influencer_id=influencer.id
    number_of_followers=influencer.followers_count
    print("number of followers count : ",number_of_followers,'\n','user id : ',influencer_id)
    status = tweepy.Cursor(api.followers_ids, screen_name=person, tweet_mode="extended").items()
    for i in range(0,number_of_followers):
        try:
            user=next(status)
            foloowersid.append([user])
            count += 1
        except tweepy.TweepError:
            print('error limite of twiter sleep for 15 min')
            timestamp = time.strftime("%d.%m.%Y %H:%M:%S", time.localtime())
            print(timestamp)
            if len(foloowersid)>0 :
                print('the number get until this time :', count,'all folloers count is : ',number_of_followers)
                foloowersid = np.array(str(foloowersid))
                save_followers_status(person, foloowersid)
                foloowersid = []
            time.sleep(15*60)
            next(status)
        except :
            print('end of foloowers ', count, 'all followers count is : ', number_of_followers)
            foloowersid = np.array(str(foloowersid))
            save_followers_status(person, foloowersid)      
            foloowersid = []
    save_followers_status(person, foloowersid)
    # foloowersid = np.array(map(str,foloowersid))
    return foloowersid
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17431807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档