2016-12-23 32 views
0

希望有人能告訴我這個腳本是否按照我的意圖運行,如果不解釋我做錯了什麼。Python 3.5.2迭代獲取請求

我使用的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'} 

我應該創建一個會話,使用以前未使用PAGENUMBER參數創建一個新的URL,直到「X-實體計數」是零?或者,還有更好的方法?

+2

'chunkSize'純粹是關於你正在閱讀的原始字節數一次迴應。這與api返回給你的更高級別的部分(頁面,對象,其他)無關。 – pvg

+0

謝謝,這是否意味着我應該刪除chuck_size = 50,並且請求應該通過多個頁面正確迭代? – BSCowboy

+2

如果沒有塊大小,您只需將整個響應內容讀入內存並將其寫入文件即可。使用cunksize,你一次只能做50個字節。這與這些頁面沒有任何關係。不管怎樣,你無論如何都會關心頁面,因爲你無論如何都將整個事情寫入文件。 – pvg

回答