检索所有" Yahoo Answers"包含某个单词的问题。速率限制问题

时间:2013-03-07 18:00:13

标签: python api yahoo-api

所以,我正在尝试编译包含某个单词的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个回复,而我无法找到扩展我得到的问题范围的方法。有什么想法吗?

1 个答案:

答案 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   次/小时。

     

*请不要创建多个密钥来“避免”速率限制。如果您希望我们增加您的限额,请与我们联系并提供详细信息   您的项目,我们会尽力满足您的需求。

显然,您需要小心您的代码,以确保您获得所需的信息而不超过速率限制。因此,获得“所有”答案可能并不实际。