Проблема майнинга Twitter с ограничением скорости

#python #twitter #tweepy #mining

#питон #Twitter #твипи #добыча полезных ископаемых

Вопрос:

Я работал в исследовательском проекте , включающем получение информации о друзьях и подписчиках из Twitter . Я написал код , который отлично работает для примерного аккаунта , подобного моему , у которого 1 тыс. подписчиков или друзей . Но у меня возникли проблемы с запуском аккаунта Дональда Трампа , у которого 12,2 миллиона подписчиков . В моей программе после запроса в течение некоторого времени превышается ограничение скорости, и я жду 15 минут, а затем снова запрашиваю то же самое. Этот процесс отлично работает для информации о 1 миллионе пользователей, но после этого он застревает или иногда выдает ошибку URL. Пожалуйста , подскажите , в чем может быть проблема при работе с такими большими данными и каково было бы решение . Пожалуйста, найдите фрагмент кода для того же самого ниже —

 def get_info_by_screen_name(t, screen_names):

    sn_to_info = {}
    while len(screen_names) > 0:

        # Process 100 ids at a time...

        screen_names_str = ','.join([str(sn) for sn in screen_names[:100]])
        screen_names = screen_names[100:]

        response = make_twitter_request(t,
                                        getattr(getattr(t, "users"), "lookup"),
                                        screen_name=screen_names_str)

        if response is None:
            break

        if type(response) is dict:  # Handle Twitter API quirk
            response = [response]

        for user_info in response:
            sn_to_info[user_info['screen_name']] = user_info

    return sn_to_info


    t = oauth_login()

    friends_ids, followers_ids = get_friends_followers_ids(t,
                                                           screen_name="realDonaldTrump",
                                                           friends_limit=100,
                                                           followers_limit=100)

    # Basic usage...


    print friends_ids
    print followers_ids
    # Basic usage...
    info = {}
    data_test = {}
    info.update(get_info_by_id(t, friends_ids))
 

Комментарии:

1. не могу увидеть ваш фрагмент кода.

2. @vatsalmevada pfa

3. Вы не должны ждать, пока достигнете скорости, прежде чем останавливаться. Пытались ли вы заснуть на 16 минут непосредственно перед тем, как превысить лимит скорости (который установлен на уровне 180 запросов за 15 минут)?

4. @Efferalgan спасибо за ваш ответ. Теперь эта проблема решена. Я получаю ошибку памяти в приведенном ниже коде — ids_str = ‘,’.join([str(_id) для _id в идентификаторах[:100]]) ids = ids[100:] <——— в этой точке есть ошибка памяти . где ids dict содержит около 12,5 миллионов записей. в чем может быть проблема, не могли бы вы предложить.

5. Проблема, с которой вы столкнулись, заключается в том, что, очевидно, 12,5 миллионов записей слишком велики для вашей памяти. Я не знаю, что вы пытаетесь сделать со своими данными, но, если возможно, вы должны обрабатывать идентификаторы по мере их получения, или порциями по 100 000, или любым другим размером порции, который подходит лучше.