所以,我正在尝试编译包含某个单词的Yahoo Answers中所有问题的数据库。我目前正在使用我编写的以下脚本执行此操作,使用Pynswers包装类来调用Yahoo API
from Answers import Answers
app = Answers()
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet 1')
app.appid = '...'
questions = app.questionSearch({'query':'tornado',})
#Write all column headings
sheet.write(0,0, 'Question')
sheet.write(0,1,'Answer')
sheet.write(0,2, 'Date')
sheet.write(0,3,'Number of Answers')
for i, value in enumerate(questions):
content = value['Content'].strip()
chosenAnswer = value['ChosenAnswer'].strip()
date = value['Date'].strip()
numAnswers = value['NumAnswers'].strip()
#Write values into respect columns, (row, column)
sheet.write(i+1,0,content)
sheet.write(i+1,1,chosenAnswer)
sheet.write(i+1,2,date)
sheet.write(i+1,3,numAnswers)
wbk.save('C://test.xls')
问题是我只从这个查询得到大约10个回复,而我无法找到扩展我得到的问题范围的方法。有什么想法吗?
答案 0 :(得分:2)
Pynswers似乎是Yahoo API itself周围非常松散的包装器。 API文档显示在请求中使用“开始”和“结果”字段:
所以,也许你可以做到以下几点:
first_50 = app.questionSearch({'query':'tornado', 'start' : 0, 'results' : 50})
next_50 = app.questionSearch({'query':'tornado', 'start' : 50, 'results' : 50})
修改强>
另外,关于“限速”,Yahoo states in regard to their API(本节于2013年3月7日拍摄):
我可以在一分钟/小时/天内拨打YQL多少次?
YQL中的费率限制 基于您的身份验证。如果您使用基于IP的身份验证, 然后,您只能将2,000个电话/小时/ IP发送到公共YQL Web 服务URL(/ v1 / public / )或20,000个呼叫/小时/ IP到私有YQL 需要OAuth授权的Web服务URL(/ v1 / yql / )。见 公共和私有URL的YQL Web服务URL。应用 (由访问密钥标识)限制为100,000个呼叫/天/密钥*。 但是,为了确保每个人都可以使用该服务 我们要求您不要将YQL调用超过0.2次/秒或1,000 IP认证用户的时间/小时和2.7次/秒或10,000 次/小时。
*请不要创建多个密钥来“避免”速率限制。如果您希望我们增加您的限额,请与我们联系并提供详细信息 您的项目,我们会尽力满足您的需求。
显然,您需要小心您的代码,以确保您获得所需的信息而不超过速率限制。因此,获得“所有”答案可能并不实际。