2017-06-20 40 views
0

大家好我有下面的代碼這是工作得很好Python的請求的Web數據

import requests 

import json 

f= open 
r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/54c234f02ec4abe957b84f37?format=json') 

data = r.json() 

with open('data.json', 'w') as f: 

json.dump(data, f) 

,但我願把URL的廁所標識部分,上面是54c234f02ec4abe957b84f37?動態。它必須從一個JSON列表讀取,我可以通過這個代碼加載列表 -

import json 

with open('loos.json') as json_data: 


d = json.load(json_data) 

,但我無法弄清楚如何使「身份證」從洛斯數據集閱讀,追加每JSON結果到JSON轉儲,因爲它通過「洛斯」數據集

迭代我覺得我如此接近完成這個任務,但只需要一個尖或2

千恩萬謝。

追加更新

`import json 
import requests 

with open('Tloos.json') as json_data: 

data = json.load(json_data) 

for i, loo in enumerate(data['features']): 
    loo_id = loo['_id'] 
    r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/{}?format=json'.format(loo_id)) 

data = r.json() 
with open('data%d.json' %i, 'w') as f: 
    json.dump(data, f)` 

所以,這是我的嘗試,但它只能保存在輸出的JSON文件的最後一個廁所ID,我想這是改寫別人(我的測試Tloos.json文件有共3個)或者沒有正確迭代?我怎麼去調試呢?

+0

類似下面的內容可能會有所幫助:''https://greatbritishpublictoiletmap.rca.ac.uk/loos/ {}?format = json'.format(loo.id)' –

+0

非常感謝小費,我有一些類似的東西,但只是不能完全釘住它 - 在通過整個'loos'數據集運行之前,再次傾銷到json文件 – Dan

回答

1

您指定的內容可以使用字符串format函數很容易地完成。

import requests 
import json 

with open('loos.json') as json_data: 
    loo_id = json.load(json_data)['id'] 

r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/{}?format=json'.format(loo_id)) 

data = r.json() 
with open('data.json', 'w') as f: 
    json.dump(data, f) 

這會給你如何去做的要點。我不確定你的loos.json結構,所以你必須調整它,因爲你需要得到loo_id。其餘的依然如此。

如果你想遍歷許多loo_ids,你必須做這樣的事情有一個循環:

for i, loo in enumerate(loo_structure['features']): 
    loo_id = loo['_id'] 
    r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/{}?format=json'.format(loo_id)) 

    data = r.json() 
    with open('data%d.json' %i, 'w') as f: 
     json.dump(data, f) 

哪裏loo_ids是包含你的IDS一些迭代。

+0

,感謝這一點,我將實施建議,寫我的腳本 – Dan

+0

@Dan Sure。如果有效,請考慮標記我的答案並結束您的問題。乾杯。 –

+0

這裏是'loos'結構,如果有幫助 - {「type」:「FeatureCollection」,「features」:[{「_ id」:「54c2346a2ec4abe957b8353a」},{「_ id」:「54c2346a2ec4abe957b8353b」} – Dan