2017-03-02 6 views
1

私は現在twitter scraperを作っています。複数のハッシュタグですべてのツイートを取得したいと思います。問題は、最初のハッシュタグを渡すときに毎回429のエラーが発生することです。私は関数をスリープ状態にしようとしましたが、2回目のハッシュタグが周りにくるたびに機能しません。Python Tweepy rate limitに達しました

import tweepy 
import time 
import json 
from collections import defaultdict as dd 

f = open("tokens.txt", 'r') 
consumer_key = f.readline().strip() 
consumer_secret = f.readline().strip() 
app_key = f.readline().strip() 
app_secret = f.readline().strip() 

auth =tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(app_key,app_secret) 

api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True) 



usercount = dd(int) 
userfollowers = dd(int) 
mostretweets = dd(int) 
mostfav = dd(int) 

hashtag = ['#csforall','#equality'] 
for i in hashtag : 
    for status in tweepy.Cursor(api.search, q=i,since="2017-02-25",until="2017-02-28",lang="en").items(): 
     parsed = status._json 
     usercount[parsed['user']['name'].encode("utf-8")]+=1 
     userfollowers[parsed['user']['name'].encode("utf-8")]= parsed['user']['followers_count'] 
     mostretweets[parsed['text'].encode('utf-8')] = parsed['retweet_count']   
     mostfav[parsed['text'].encode('utf-8')] = parsed['favorite_count'] 

     time.sleep(2) 



    sortcount = sorted(usercount.items(), key=lambda x: x[1], reverse =True) 
    top = sortcount[:1] 
    frequser=[] 
    for i in sortcount: 
     if i[1] == top: 
      frequser.append(i) 
     else: 
      break  
    print ("Top most frequent user: \n " + str(i[0])) +"\n" 

    followcount = sorted(userfollowers.items(), key=lambda x: x[1], reverse =True) 
    fol = followcount[:1] 
    freqfollow = [] 
    for j in followcount: 
     if j[1] == fol: 
      freqfollow.append(i) 
     else: 
      break  
    print ("User with most followers: \n " + str(j[1])) 


    retweetcount = sorted(mostretweets.items(), key=lambda x: x[1], reverse = True) 
    ret = retweetcount[:1] 
    freqretweet =[] 
    for i in retweetcount: 
     if i[1] == ret: 
      freqretweet == ret 
     else: 
      break 
    print str(i[0])+"\n" 

    favcount = sorted(mostfav.items(), key=lambda x: x[1], reverse = True) 
    ret = favcount[:1] 
    freqfav =[] 
    for i in favcount: 
     if i[1] == ret: 
      freqfav == ret 
     else: 
      break 
    print str(i[0])+"\n" 

答えて

0

はこれを入れています:

for i in hashtag: 
    time.sleep(2) 
    for status in tweepy.Cursor(api.search, q=i,since="2017-02-25",until="2017-02-28",lang="en").items(): 

仕事を?

+0

いいえ動作しません。 #equalityはあまりにも多くのつぶやきを持ち、429エラーを受け取ります。 – MountainSon

+0

両方のtime.sleepsで動作しますか? –

+0

#equalityでスリープ状態にしたとき、それが終わるように見えないように、時間がかかりすぎるような平等を持つたくさんのつぶやきがあります – MountainSon

関連する問題