2017-02-21 173 views
0

我試圖從RIDB API(政府娛樂數據)獲取信息。不過,我很困惑如何使用URL參數。我查了一些例子,嘗試了很多不同的東西。網址參數我做錯了什麼?

首先,要開始我有https://ridb.recreation.gov/api/v1/trails/USFS/它工作得很好。我得到一個包含跟蹤信息的JSON結果,非常完美。但是,如果我嘗試https://ridb.recreation.gov/api/v1/trails/USFS/milesmin10https://ridb.recreation.gov/api/v1/trails/USFS/milesmin=10https://ridb.recreation.gov/api/v1/trails/USFS?milesmin=10https://ridb.recreation.gov/api/v1/trails/USFS?milesmin10作爲示例,我什麼也沒有回來。正如你可以從附件milesmin看到的是一個可接受的參數,有人可以解釋如何在我的代碼中包含這些參數和/或我明顯做錯了什麼。

URL Parameters

+0

從你所說的,端點以斜線結尾,所以添加URL參數後,應該是:'http://ridb.recreation.gov/api.v1.trails/USFS/? milesmin = 10' – pbuck

+2

'https://ridb.recreation.gov/api/v1/trails/USFS/?milesmin = 10'&https://ridb.recreation.gov/api/v1/trails/USFS?milesmin = 10'都爲我工作。 –

+0

@NiteshVerma你說得對。他們工作,我意識到我的URL形成不正確,因爲我在URL的末尾添加了API密鑰,這很好,但我需要密鑰前面的'&'符號以保持其正常工作。標記爲「最佳」的答案解決了發生這些類型的問題。 – MingyJ

回答

1

我用requests,它工作得很好。您必須註冊their API key才能使用此服務。這個過程很快,而且我在不到5分鐘的時間就得到了一把鑰匙。這是得到結果的代碼。

import requests 

# You must replace <your api key> with the key they give you 
api = <your api key> 
url = 'https://ridb.recreation.gov/api/v1/trails/USFS/' 

params = {'milesmin': 10, 'apikey': api} 

r = requests.get(url, params=params) 


# In [168]: r.request.url 
# Out[168]: 'https://ridb.recreation.gov/api/v1/trails/USFS/?milesmin=10&apikey=<your api key>' 

# In [169]: r.text[:500] 
# Out[169]: u'{"RECDATA":[{"TypicalTreadWidth":"N\\/A","MinimumTrailWidth":"N\\/A","TypicalTreadCrossSlope 
# ":"N\\/A","TerraMotorized":"N\\/A","AllowedSnowUse":"N\\/A","PackSaddleRestricted":"N\\/A", 
# "TrailSurface":"N\\/A","TrailNo":"8021SA","AllowedTerraUse":"N\\/A","XcountrySkiAccptDisc":"N\\/A", 
# "TrailUSFSID":20,"NonmotorWatercraftManaged":"N\\/A","XcountrySkiManaged":"N\\/A", 
# "BicycleManaged":"N\\/A","ShapeLength":0.5105766578900838,"MVUMSymbol":99, 
# "MotorcycleManaged":"N\\/A","GEOM":"LINESTRING (-111.69189874799997 39.9735' 
+0

謝謝!你的回答顯示了一種避免我正在犯的錯誤的方法。 我有'https://ridb.recreation.gov/api/v1/trails/USFS?APIKEY',所以當我添加了參數時,我有'https://ridb.recreation.gov/api/v1/trails/USFS ?APIKEY?Params'在沒有使用「&」符號的情況下顯然不起作用。你的方法顯然優越,所以謝謝你! – MingyJ