2017-04-22 1 views
0

だから、タイトルは私が推測する少し混乱..です単一のURLに複数のページから複数のAPI呼び出しを行う方法

私はそれがいくつかのランダムなデータが表示されます書き込み、他の非されてきたスクリプトを持っています私のシェルを開くときに不可欠です。複数のURLを使用しているため、grequestを使用してAPI呼び出しを行っています。私の天気データについては、WeatherUndergroundのAPIを使用しています。アクティブアラートを提供するからです。 アラートおよび条件のデータは別のページにあります。私が理解できないことは、要求を出しているときにgrequestsオブジェクトに適切な名前を挿入する方法です。 URL 'http://api.wunderground.com/api/'+api_id+'/conditions/q/autoip.json'

URLS = ['http://api.wunderground.com/api/'+api_id+'/conditions/q/autoip.json', 
     'http://www.ourmanna.com/verses/api/get/?format=json', 
     'http://quotes.rest/qod.json', 
     'http://httpbin.org/ip'] 

requests = (grequests.get(url) for url in URLS) 
responses = grequests.map(requests) 
data = [response.json() for response in responses] 

#json parsing from here 

私は、私は必要なデータを取得するために条件アラートにAPIリクエストを行う必要があります。ここで私が持っているコードです。 4番目のURL文字列を書き換えないでこれを行うにはどうすればよいですか?

私はあなたのいくつかのより多くの経験豊かなプログラマが知っていると確信しているとして、投げ、例外、

pages = ['conditions', 'alerts'] 
URL = ['http://api.wunderground.com/api/'+api_id+([p for p in pages])/q/autoip.json'] 

を試みたが、しました。では、これらのページをどのように反復することができますか、または完全なURLを両方とも書き出す必要がありますか?

ありがとうございます!

答えて

0

私は実際にループのために単純なを使ってgrequestsオブジェクト内の個々のページを呼び出す方法を見つけ出すことができました。ここで私は生産期待される結果に使用されるコードは次のとおりです。

import grequests 

pages = ['conditions', 'alerts'] 
api_id = 'myapikeyhere' 

for p in pages: 
    URLS = ['http://api.wunderground.com/api/'+api_id+'/'+p+'/q/autoip.json', 
      'http://www.ourmanna.com/verses/api/get/?format=json', 
      'http://quotes.rest/qod.json', 
      'http://httpbin.org/ip'] 

    #create grequest object and retrieve results 
    requests = (grequests.get(url) for url in URLS) 
    responses = grequests.map(requests) 
    data = [response.json() for response in responses] 

    #json parsing from here 

私は前にこれを理解できなかった理由私はまだわかりません。

grequestsライブラリのドキュメントhere

関連する問題