2016-12-23 9 views
0

誰かが望むことは、このスクリプトが意図したとおりに機能しているかどうか、私が間違っていることを説明していないかどうかを知ることができます。Python 3.5.2 getリクエストの反復

私が使用しているRESTful APIは、pageSizeパラメータが10〜50の範囲です。私はpageSize = 50を使用しました。私はそうPAGENUMBER

と呼ばれる使用していなかった別のパラメータがありました、私はこれがGET要求を行うための正しい方法だろうと思った:

# Python 3.5.2 
import requests 

r = requests.get(url, stream=True) 
with open("file.txt",'w', newline='', encoding='utf-8') as fd: 
    text_out = r.text   
    fd.write(text_out) 


UPDATEが、私は少し良く理解して考えます。ドキュメントをより詳細に読んでいますが、APIからデータセット全体を取得する方法はまだありません。ここではいくつかのより多くの情報がある:

verbs = requests.options(r.url) 
print(verbs.headers) 
{'Server': 'ninx', 'Date': 'Sat, 24 Dec 2016 22:50:13 GMT', 
'Allow': 'OPTIONS,HEAD,GET', 'Content-Length': '0', 'Connection': 'keep-alive'} 
print(r.headers) 
{'Transfer-Encoding': 'chunked', 'Vary': 'Accept-Encoding', 
'X-Entity-Count': '50', 'Connection': 'keep-alive', 
'Content-Encoding': 'gzip', 'Date': 'Sat, 24 Dec 2016 23:59:07 GMT', 
'Server': 'ninx', 'Content-Type': 'application/json; charset=UTF-8'} 

は、私がセッションを作成し、「X-ENTITY-Countが」ゼロになるまで、新しいURLを作成するために、以前に使用されていないページ番号パラメータを使用する必要がありますか?それとも良い方法がありますか?

+2

'chunkSize'はあなたが読んでいるから、生のバイト数については、純粋で削除する必要があります応答は一度に。 apiがあなたに戻ってくる上位レベルの部分(ページ、オブジェクトなど)とは関係ありません。 – pvg

+0

ありがとうございます、それは私がchuck_size = 50を削除しなければならないことを意味し、要求は複数のページを通して正しく反復すべきですか? – BSCowboy

+2

チャンクなしでは、レスポンスの内容全体をメモリに読み込んでファイルに書き込むだけです。 cunksizeでは、一度に50バイトずつ処理しています。これのどれもページとは関係ありません。とにかくすべてのものをファイルに書き込んでいるので、どうしてこのページを気にかけているのかは明らかではありません。 – pvg

答えて