以下のコードを実行したのですが、エラーが出てしまいます。
ご指摘、ご教授お願いします。
python
1import requests 2import json 3↓ 4apikey = "MMM" 5↓ 6cities = ["London,UK", "Tokyo,JP", "New York,US"] 7↓ 8api = "http://api.openweathermap.org/data/2.5/forecast?q=Tokyo&APPID={MMM}" 9↓ 10k2c =lambda k: k - 273.15 11↓ 12for name in cities: 13 print("London,UK", "Tokyo,JP", "New York,US") 14↓ 15for name in cities: 16 print("London,UK", "Tokyo,JP", "New York,US")
エラー内容。
python
1for name in cities: 2 print("London,UK", "Tokyo,JP", "New York,US") 3 4 url = api.format(city=name, key=apikey) 5 r = requests.get(url) 6 data = json.loads(r.text) 7 print("+ 都市 =", data["name"]) 8 print("| 天気 =", data["weather"][0]["description"]) 9 print("| 最低気温 =", k2c(data["main"]["temp_min"])) 10 print("| 最高気温 =", k2c(data["main"]["temp_max"])) 11 print("| 湿度 =", data["main"]["humidity"]) 12 print("| 気圧 =", data["main"]["pressure"]) 13 print("| 風速度 =", data["wind"]["speed"]) 14 print("") 15↓ 16London,UK Tokyo,JP New York,US 17--------------------------------------------------------------------------- 18KeyError Traceback (most recent call last) 19<ipython-input-126-8a8e428ed215> in <module> 20 2 print("London,UK", "Tokyo,JP", "New York,US") 21 3 22----> 4 url = api.format(city=name, key=apikey) 23 5 r = requests.get(url) 24 6 data = json.loads(r.text) 25 26KeyError: 'MMM' 27
JSONDecodeErrorってエラーなんで、単純にr.textがJSONとして不正な内容なんじゃないですかね?
中身確認しましたか?
ご返信ありがとうございます。
確認方法など教えていただけると助かります。
print(r.text)とか
ご返信ありがとうございます。
確認方法を実行した内容を追記させてもらいました。
また、エラーなら実行結果を通すことも同様に、内容がよくわからないため、ご説明してもらえると幸いです。
よろしくお願いいたします。
いや書いてあるでしょ。中学生レベルの英語なんだから丸投げせず読もう。
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
If you are the application owner check the logs for more information.
つまりあなたが叩いたAPIのアドレスが正しくないとかそういうこと。
そもそも具体的にどこのAPIを使ってるのかわからないとこれ以上回答のしようがない。
ご丁寧な説明ありがとうございます。
スクレイピング先のLinkを追記させていただきました。
APIアドレスの確認方法なども教えていただけると幸いです。
あなたがそのサイトのドキュメントを読んで、APIを利用するために必要だと思って参考にしたドキュメントの記述と、それに沿って実装した処理の全てを記載してください。
追記いたしました。
追記した内容が、合っているかご確認お願いします。
それはAPIの「概要」であって、それだけで実装の方法がわかるはずがありません。
ちゃんとドキュメントを読んでないのなら先ず読みましょう。
またコード上いきなり出てくる「api」がどこで定義されたものなのかもわかる記述になっていません。
回答者はエスパーじゃないので、そんな情報で回答できるわけがありません。
ちゃんと関係するコードの「全て」を提示しましょう。
コードについて、基本的に「第三者がそれをコピペすればすぐ動く」レベルのコードを提示してください。
どうしてもそれが不可能な場合、不可能な理由を述べましょう。
URLについて
記載されているAPI URLがおそらく間違いです.
Open Weather Map のエンドポイント形式以前に流石にapi_keysで終わるエンドポイントから天気情報は取得できないでしょう.
記載されているコードの前にフォーマット文字列apiの定義があり,そこでAPIキーの入力まではされていることと思います.正しいエンドポイントを利用することが第一でしょう.
ただ,citiesの定義など足りない箇所が多いのでsecret部分(多分APIキーのみ)以外すべての処理を記載してください.
ご説明ありがとうございます。
確認してみます!
ご返事遅れてしまいすいませ。
正しいエンドラインは、http://api.openweathermap.org/data/2.5/forecast?id=524901&appid={API key} URL の最後尾の[]の中のAPI キーをの部分を取得したAPIを貼り付けすればよろしいのでしょうか。してみたのですが、エラーが出てしまいます。
また、secret部分をもう少し、初心者向けにご説明してくださると助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー