Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “检索全部”;雅虎回答;包含某个单词的问题。利率限制问题_Python_Api_Yahoo Api - Fatal编程技术网

Python “检索全部”;雅虎回答;包含某个单词的问题。利率限制问题

Python “检索全部”;雅虎回答;包含某个单词的问题。利率限制问题,python,api,yahoo-api,Python,Api,Yahoo Api,所以,我正试图编译一个数据库,包含雅虎答案中包含某个单词的所有问题。我目前正在使用我编写的以下脚本执行此操作,使用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'

所以,我正试图编译一个数据库,包含雅虎答案中包含某个单词的所有问题。我目前正在使用我编写的以下脚本执行此操作,使用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个回答,我无法找到一种方法来扩大我得到的问题的范围。有什么想法吗?

似乎是一个非常松散的包装。API文档显示如何在请求中使用“开始”和“结果”字段:

因此,或许你可以做以下几点:

first_50 = app.questionSearch({'query':'tornado', 'start' : 0, 'results' : 50})
next_50 = app.questionSearch({'query':'tornado', 'start' : 50, 'results' : 50})
编辑

此外,关于“利率限制”(本节于2013年3月7日发布):

我可以在一分钟/小时/天内给YQL打多少次电话

YQL中的速率限制 基于您的身份验证。如果使用基于IP的身份验证, 然后,您最多可以拨打2000次电话/小时/IP到公共YQL Web 服务URL(/v1/public/)或20000次呼叫/小时/IP到专用YQL 需要OAuth授权的Web服务URL(/v1/yql/)。见 用于公共和私有URL的YQL Web服务URL。应用 (由访问密钥标识)限制为每天100000次呼叫/密钥*。 但是,为了确保每个人都可以使用该服务 我们要求您拨打YQL的次数不要超过0.2次/秒或1000次 IP认证用户的次数/小时和2.7次/秒或10000次 次/小时

*请不要创建多个密钥以“避免”速率限制。如果您希望我们增加您的限额,请与我们联系,并提供详细信息 您的项目,我们将尽最大努力为您提供服务


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

我实际上不知道是否可行,我认为这取决于国家、网站等。OP使用的是Yahoo API,因此这不是一个网页抓取的问题。谢谢你,我已经做了这件事。我的问题,我应该更具体一点,是如何通过多个请求来超越50个查询。明白了,让我试试这个,我会让你知道的。我不知道有一个“开始”字段。嗯-也许你可以想出一个解决这个问题的方法。根据Yahoo API,最大“开始”可以达到1000。所以我只能勉强凑足1050英镑。有什么想法吗?没有,我不知道是否有办法解决这个问题,考虑到他们增加了限制(这实际上比允许你使用任何你想要的数字要多),我想这是有原因的。我在其他地方也看到过类似的限制。对于另一个StackOverflow问题来说,这个限制的原因可能是一个很好的话题。@Parseltongue问了这个限制问题,但被主持人关闭了。我评论道:大多数像这样的“搜索”API(特别是来自雅虎和谷歌)对于给定的查询只能得到有限的结果。原因:1)最有用的结果可能会出现在结果的前几页,2)阻止其他网站或应用程序对数据进行完整提取。