我正在使用Twitter的Sandbox API对Twitter数据进行历史搜索。我在Python上使用TwitterAPI包。 Sandbox每月允许共有50个API请求。
我在下面有这个代码,它收集数据很好,但只进行了一个请求,这意味着我只有100条推文。我想知道我可以插入什么代码,所以我可以一次性发出多个请求。我希望现在使用此代码来使用本月的所有50个请求。
当前代码:
from TwitterAPI import TwitterAPI
import csv
SEARCH_TERM = 'my-search-term-here'
PRODUCT = 'fullarchive'
LABEL = 'here-goes-my-dev-env'
api = TwitterAPI("consumer_key",
"consumer_secret",
"access_token_key",
"access_token_secret")
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL),
{'query':SEARCH_TERM,
'fromDate':'201811151334',
'toDate':'201811161500'
}
)
csvFile = open('filename.csv', 'a')
csvWriter = csv.writer(csvFile)
for item in r:
csvWriter.writerow([item['created_at'],item['user']. ['screen_name'], item['text']
我不确定我真的了解你的问题。您正在提出可能与数千条推文相匹配的请求,现在您访问前100条,但您现在希望下一条100是正确的吗?如果是这样,您应该知道Twitter API基于分页系统。这意味着如果您的请求与300条推文匹配,则可以访问3页100条推文。为此,请依赖TwitterAPI的分页API:
http://geduldig.github.io/TwitterAPI/paging.html https://geduldig.github.io/TwitterAPI/twitterpager.html
请注意,还有另一个库'tweepy',它可以完全相同。我发现它更方便,但这是个人的。
正如machinus所说,你可以使用TwitterPager实用程序。在您的代码中,我认为您需要更改这行代码:
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL),
{'query':SEARCH_TERM, 'fromDate':'201811151334', 'toDate':'201811161500'})
对此:
pager = TwitterPager(api, 'tweets/search/%s/:%s' % (PRODUCT, LABEL),
{'query':SEARCH_TERM, 'fromDate':'201811151334', 'toDate':'201811161500'})
r = pager.get_iterator()