Twitter API: как заставить запрос работать?
Здесь начинающий программист обращается за помощью.
Я уже настроил свой код в соответствии со своими требованиями, чтобы использовать премиум API Twitter.
SEARCH_TERM = '#AAPL OR #FB OR #KO OR #ABT OR #PEPCO'
PRODUCT = 'fullarchive'
LABEL = 'my_label'
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL),
{'query':SEARCH_TERM, 'fromDate':201501010000, 'toDate':201812310000})
Однако, когда я запускаю его, я получаю максимальное количество твитов на поиск, которое составляет 500. Мой вопрос: следует ли мне добавить к запросу maxResults = 500? И как мне использовать следующий параметр, чтобы код работал, пока не будут получены все твиты, соответствующие моему запросу?
2 ответа
Да, чтобы увеличить результаты со значения по умолчанию от 100 до 500, добавьте maxResults
на такой запрос:
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL),
{
'query':SEARCH_TERM,
'fromDate':201501010000, 'toDate':201812310000,
'maxResults':500
})
Вы можете делать последовательные запросы, чтобы получить больше результатов, используя next
параметр. Но, что еще проще, вы можете позволить TwitterAPI сделать это за вас, используяTwitterPager
учебный класс. Вот пример:
from TwitterAPI import TwitterAPI, TwitterPager
SEARCH_TERM = '#AAPL OR #FB OR #KO OR #ABT OR #PEPCO'
PRODUCT = 'fullarchive'
LABEL = 'my_label'
api = TwitterAPI(<consumer key>,
<consumer secret>,
<access token key>,
<access token secret>)
pager = TwitterPager(api, 'tweets/search/%s/:%s' % (PRODUCT, LABEL),
{
'query':SEARCH_TERM,
'fromDate':201501010000, 'toDate':201812310000
})
for item in pager.get_iterator():
print(item['text'] if 'text' in item else item)
В этом примере будут выполняться последовательные запросы с next
параметр до тех пор, пока твиты не будут загружены.
Используйте переменную count в raw_query, например:
results = api.GetSearch(
raw_query="q=twitter%20&result_type=recent&since=2014-07-19&count=100")