簡體   English   中英

通過循環進行十次api調用

[英]Making ten api calls through a loop

我要使用的API將請求限制為10個項目。 我想下載100個項目。 我正在嘗試編寫一個使10 API成為可能的函數,並使用其偏移功能來實現。 我認為循環將是執行此操作的正確方法。

這是我的代碼,但是它不起作用,我也不明白為什么:

import pandas as pd
import requests

api_key = 'THIS_IS_MY_KEY'
api_url = 'http://apiurl.com/doc?limit=10' # fake url
headers = {'Authorization': 'Bearer ' + api_key}

for x in range(0, 10):
    number = 0
    url = api_url + '&offset=' + str(number + 10)
    r = requests.get(url, headers=headers)
    x = pd.DataFrame(r.json())
    x = x['data'].apply(pd.Series)
return x

您還使用x作為循環計數器和數據幀-我認為這不是一個好習慣-盡管由於for循環的工作方式,您的代碼仍然可以工作。 更好的方法是在范圍調用中使用step參數-如下所示。 還不清楚您期望返回什么-您是否要返回獲取的最后一個偏移量-還是數據幀(由於代碼以3種不同的方式重復使用x,因此無法確定您的意圖-因此我照原樣保留了它-盡管我非常確定這是錯誤的-看看panda API)

import pandas as pd
import requests

api_key = 'THIS_IS_MY_KEY'
api_url = 'http://apiurl.com/doc?limit=10' # fake url
headers = {'Authorization': 'Bearer ' + api_key}

for offset in range(0, 100, 10): # makes a list [0, 10,20,30,40,50,60,70,80,90,100]
    url = api_url + '&offset=' + str(offset)
    r = requests.get(url, headers=headers)
    x = pd.DataFrame(r.json())
    x = x['data'].apply(pd.Series) 
return x

您看到什么結果? 嘗試

url = api_url + '&offset=' + str(x * 10)

變量從不更改,因為在循環開始時將其設置為0
我認為您的意思是:

import pandas as pd
import requests

api_key = 'THIS_IS_MY_KEY'
api_url = 'http://apiurl.com/doc?limit=10' # fake url
headers = {'Authorization': 'Bearer ' + api_key}
number = 0

for x in range(0, 10):
    url = api_url + '&offset=' + str(number + 10)
    r = requests.get(url, headers=headers)
    x = pd.DataFrame(r.json())
    x = x['data'].apply(pd.Series)
    number += 10

return x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM