Снижение загрузки Twitter API, сохраняя 100 пользователей, затем запрашивая информацию (GET users / lookup), а затем помещая ее вместе с другим info-python - PullRequest
1 голос
/ 17 января 2012

Я знаю длинный титул - я не мог думать ни о чем другом;)

Итак, я пишу скрипт на python, который сохранит элементы API поиска в Twitter в файл csv

writer = csv.writer(open('stocks.csv', 'a', buffering=0))
writer.writerows([(screen_name, hashtags, expanded_url , coordinates , geo , in_reply_to_user_id, followers)])

Но я хочу добавить, сколько подписчиков в Твиттере есть у пользователя!

Теперь это делается через GET users / lookup API API, который ограничен 350 запросами в час, но позволяет одновременно просматривать до 100 пользователей

прямо сейчас мой скрипт при поиске твита ищет подписчиков пользователей и вставляет в него все данные твита в файл csv.

Это прекрасно работает, но после 350 поисков я достиг своего предела !!!!

Теперь мой вопрос: Могу ли я выполнить поиск по сценарию 100 раз и сохранить где-то сотни имен пользователей, и как только он достигнет 100, он вызывает GET users / lookup и вставляет информацию о праве на информацию о поиске в файл excel:

Пример Excel:

 [info from search ...(in many columns)] [followers of the user who sent the tweet]
 [info from search ...(in many columns)] [followers of the user who sent the tweet]
 [info from search ...(in many columns)] [followers of the user who sent the tweet]

По запросу:

import urllib2
import urllib
import json
import time


 s = u'@apple OR @iphone OR @aapl OR @imac OR @ipad OR @mac OR @macbook OR macbook OR mac OR ipad OR iphone 4s OR iphone 5 OR @iphone4s OR @ iphone 5 OR aapl OR iphone'

info =  urllib2.quote(s.encode("utf8"))
page = "?q="

 openurl = urllib.urlopen("http://search.twitter.com/search.json"+ page + info)

quota = 150
user = 'twitter'
user_info = urllib.urlopen("https://api.twitter.com/1/users/lookup.json?screen_name="+user)

while quota > 10:
 openurl2 = urllib.urlopen("https://api.twitter.com/1/account/rate_limit_status.json")
 twitter_quota = openurl2.read()
 quota_json = json.loads(twitter_quota)
 quota = quota_json['remaining_hits']


 twitter_search = openurl.read()

 table_search = json.loads(twitter_search)
 print table_search

 print str(table_search[u'results'][1][u'iso_language_code'])


 lines = 0

 linesmax = len(table_search[u'results'])
 print linesmax

 while lines < linesmax:
    table_timeline_inner = table_search[u'results'][lines]


    next = table_search[u'next_page']
    lang = table_timeline_inner[u'iso_language_code']
    to = table_timeline_inner[u'to_user_name']
    text = table_timeline_inner[u'text']
    user = table_timeline_inner[u'from_user']
    geo = table_timeline_inner[u'geo']
    time = table_timeline_inner[u'created_at']
    result_type = table_timeline_inner[u'metadata'][u'result_type']
    id = table_timeline_inner[u'id']

1 Ответ

0 голосов
/ 17 января 2012

Да. Вместо записи каждой строки, как только вы ее получите, сохраните ее во временном наборе. Когда этот набор содержит 100 элементов, просмотрите их все, используя один запрос. Затем выполните итерацию по каждому элементу набора и запишите его вместе с данными, полученными в запросе, которые вы должны будете сопоставить по идентификатору пользователя или чему-то еще.

Я не собираюсь писать код для вас ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...