0

そこで、特定の単語を含む Yahoo Answers のすべての質問のデータベースをコンパイルしようとしています。私は現在、Yahoo APIを呼び出すためにPynswersラッパークラスを使用して、私が書いた次のスクリプトでこれを行っています

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 件の応答しか得られず、取得する質問の範囲を広げる方法がわからないことです。何か案は?

4

1 に答える 1

2

Pynswersは、YahooAPI自体の非常に緩いラッパーのようです。APIドキュメントは、リクエストで「開始」フィールドと「結果」フィールドを使用することを示しています。

したがって、おそらく次のことができます。

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

編集

また、「レート制限」に関して、YahooはAPIに関して次のように述べています(このセクションは2013年3月7日に取得されました)。

1分/時間/日にYQLを何回呼び出すことができますか?

YQLのレート制限は、認証に基づいています。IPベースの認証を使用する場合、パブリックYQL WebサービスURL(/ v1 / public / )への2,000コール/時間/ IPまたはプライベートYQLWebサービスURL(/ v1)への20,000コール/時間/IPに制限されます。 / yql /)OAuth認証が必要です。パブリックURLとプライベートURLについては、YQLWebサービスのURLを参照してください。アプリケーション(アクセスキーで識別される)は、100,000コール/日/キー*に制限されています。ただし、すべての人がサービスを利用できるようにするために、IP認証ユーザーの場合は0.2回/秒または1,000回/時間、2.7回/秒または10,000回/時間を超えてYQLを呼び出さないようにしてください。

*レート制限を「回避」するために複数のキーを作成しないでください。制限の引き上げをご希望の場合は、プロジェクトの詳細をお知らせください。できる限り対応させていただきます。

明らかに、レート制限を超えずに必要な情報を確実に取得できるように、コードに注意する必要があります。したがって、「すべて」の答えを得るのは現実的ではないかもしれません。

于 2013-03-07T18:08:49.263 に答える