2017-06-06 21 views
0

Weather APIに接続してリクエストを練習しようとしています。しかし何らかの理由で私はそれを働かせることができないのですか?気象APIが特定の方法でparamを望んでいることは明らかです。私はそれがリクエストにどのように変換されるのか分かりません。ここでリクエストを使用して天気APIに接続するにはどうすればよいですか?

は私のコードです:ここでは

r = requests.get('http://api.openweathermap.org/data/2.5/weather', q={'Anderson'}) 

は、APIのページへのリンクです: https://openweathermap.org/current

私は天気のページをq =都市の面でのparamを望んでいるが、エラーがI見ます取得である:ここにも

​​

私が参照していますリクエストページ:http://docs.python-requests.org/en/master/

助けてくれてありがとう!

+0

予期しないキーワード引数 'q'を' request.get() 'メソッドに渡しています。それは特定の議論を受け入れるだけで、私の質問で述べたように、文書 – fechnert

+0

に記載されています。私の質問は正しいキーワード引数です。 – RostSunshine

+0

openweather 'appid'が必要ですhttps://openweathermap.org/appid#get –

答えて

1

requestsユーザーマニュアル、少なくともquickstart guideを確認してください。 あなたが使用しようとしているRESTful APIは、q="City Name"パラメータでGET要求を期待しています。さらに、appidを持っていて、すべてのリクエストに追加する必要があります。

  1. あなたのアプリケーションを登録し、ここでは両方q="City Name"APPID=xxxパラメータ

が要求を対応さhttps://openweathermap.org/price

  • パス価格設定プランを選択:、あなたがopenweatherためappidが必要

    api_url = 'http://api.openweathermap.org/data/2.5/weather' 
    appid = ...  
    r = requests.get(url=api_url, params=dict(q='Anderson', APPID=appid)) 
    
  • +0

    これは正しく動作していますが、情報を返すことはありません。 0のエラーで終了します。 APIを使用して情報を返すのに必要なのはこれだけでしたが、もっと必要なのでしょうか? – RostSunshine

    +0

    @RostSunshine返されたレスポンスオブジェクトを調べましたか?あなたは、提案されているようにマニュアルを参照する必要があります。 – Jkdc

    +0

    サーバーは401:Unauthorizedで応答します。つまり、認証に合格する必要があります。リクエストはそれを行うことができますhttp://docs.python-requests.org/ja/master/user/authentication/ –

    0

    は(paramsにAPIキーを追加することで)次のいずれかにお電話を変更してみてください:

    r = requests.get('http://api.openweathermap.org/data/2.5/weather', params={'q': 'Anderson', 'APPID': YOUR_API_KEY}) 
    
    0

    ました個人用無料(https://openweathermap.org/appid#get

    >>> import requests 
    >>> r = requests.get('http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1') 
    >>> loc_weather = r.content.strip() 
    >>> loc_weather 
    '{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}],"base":"stations","main":{"temp":280.32,"pressure":1012,"humidity":81,"temp_min":279.15,"temp_max":281.15},"visibility":10000,"wind":{"speed":4.1,"deg":80},"clouds":{"all":90},"dt":1485789600,"sys":{"type":1,"id":5091,"message":0.0103,"country":"GB","sunrise":1485762037,"sunset":1485794875},"id":2643743,"name":"London","cod":200}' 
    
    +0

    content.strip()は何をしますか? – RostSunshine

    +0

    'r.content'からの空白文字があれば、先頭と末尾の空白文字を取り除くだけです。 –

    関連する問題