Получение всех твитов пользователя твиттера, проблема ограничения скорости
Я пытался получить все твиты какого-то публичного (разблокированного) пользователя твиттера. Я использую REST API: http://api.twitter.com/1/statuses/user_timeline.json?screen_name=andy_murray&count=200&page=1%27
При просмотре 16 страниц (параметр страницы) это позволяет получить 3200 твитов, что нормально. НО тогда я обнаружил, что ограничение скорости для таких звонков составляет 150 в час (!!!), что означает менее 10 пользовательских запросов в час (16 страниц каждый). (350 разрешено, если вы аутентифицируетесь, все еще очень низкое число)
Есть идеи, как это решить? API потоковой \ поисковой системы кажутся неподходящими (?), и некоторые веб-сервисы, похоже, содержат эти данные.
Спасибо
3 ответа
Вы можете ставить запросы в очередь и делать их, как позволяет ограничение скорости, или вы можете делать аутентифицированные запросы несколькими пользователями. Каждый пользователь имеет 350 запросов / час.
Один из подходов состоит в том, чтобы использовать API потоковой передачи (или, возможно, более специфичные пользовательские потоки, если это лучше подходит для вашего приложения), чтобы начать собирать все твиты по мере их поступления от целевых пользователей, не прибегая к традиционным ограничениям скорости., а затем используйте REST API, чтобы заполнить исторические твиты этих пользователей.
Конечно, у вас есть только 350 аутентифицированных запросов в час, но если вы запускаете свой харвестер круглосуточно, это все равно 1 680 000 твитов в день (350 запросов / час * 24 часа / день * 200 твитов / запрос).
Так, например, если вы решили получать 1000 твитов на пользователя в день (5 вызовов API при 200 твиттах на вызов), вы можете использовать до 1680 пользовательских графиков в день (70 графиков в час). Затем, на следующий день, начните с того места, где вы остановились, собрав следующие 1000 твитов, используя самый старый идентификатор статуса для пользователя в качестве max_id
параметр в вашем статусе / запрос user_timeline.
Потоковый API будет держать вас в курсе любых новых статусов, которые твитит ваш целевой пользователь, а вызовы REST API довольно быстро, примерно через четыре дня, начнут сталкиваться с лимитом выборки Twitter для исторических твитов этих пользователей. После этого вы можете добавить дополнительных пользователей для извлечения информации из конечной точки потоковой передачи, добавив их в follow
список, и вы можете прекратить получать исторические твиты для тех пользователей, которые достигли максимума, и начать получать твиты новой целевой группы.
Похоже, что API поиска будет соответствовать вашим потребностям, поскольку вы можете выполнять поиск по псевдониму. Ограничение скорости API поиска выше, чем ограничение скорости API REST.