2

[私は Python と ruby​​ gem twurl を使用して OAuth でリクエストします。]

現在24,265,751人のフォロワーを持つ@BarackObamaのフォロワーIDをTwitterから取得しようとしています。数学的には、24,265,751 /5000/350 は収集に 13.8 時間かかります。1 時間のマージンを与えると、約 14 ~ 15 時間になります。

コードで収集しようとするたびに、ページネーション中にエラーが発生します。エラーが発生した後に収集に戻ると、別のページが表示されるため、予想以上に収集されます。

作業が間違っているのか、それともコード アーキテクチャに欠陥があるのか​​を知りたいです。使用する関数は次のとおりです。

def request_followers(namevar, name, candidate_id, id_str):
    next_cursor = -1
    cmd = 'twurl "/1/followers/ids.json?cursor=-1&screen_name=' + namevar + '"'
    data = fol_req(cmd)

    /*code to add data into database as soon as it gets the data.*/

    try:
        if (data.get('ids')):
        while (len(data.get('ids')) == 5000):
        next_cursor = data['next_cursor']
        followers_request = 'twurl "/1/followers/ids.json?cursor=' + str(next_cursor) + '&screen_name=' + namevar+'"'
        try:
            data = fol_req(followers_request)
            /*code to add data into database as soon as it gets the data.*/
            except:
            time.sleep(5)
            continue # if error, retry after 5 sec.
    except:
        print "error on", followers_request
        check_list.append(followers_request)

これはページネーションを行うためのものであり、

def fol_req(followers_request):
    request_limit = remainingHits()
    attempt = 0
    data = {}
    while (attempt < request_limit-1) and not(data.get('ids')):
        try:
            attempt += 1
            (status, output) = commands.getstatusoutput(followers_request)
            if status:
                sys.stderr.write(output)
                sys.exit(1)
            data = json.loads(output)
        except:
            continue
        break
    else:
        request_limit = remainingHits()
        time.sleep(1200)
        data = fol_req(followers_request)   
    return data

これは、twurl と python sys を使用してリクエストすることです。

私のアーキテクチャはどこか間違っていますか?

4

0 に答える 0