質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

882閲覧

python スクレイピング json.loads() JSONDecodeError

PPAP_AWS

総合スコア105

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/27 08:14

編集2020/10/28 08:35

以下のコードを実行したのですが、エラーが出てしまいます。
ご指摘、ご教授お願いします。

python

1import requests 2import json 34apikey = "MMM" 56cities = ["London,UK", "Tokyo,JP", "New York,US"] 78api = "http://api.openweathermap.org/data/2.5/forecast?q=Tokyo&APPID={MMM}" 910k2c =lambda k: k - 273.15 1112for name in cities: 13 print("London,UK", "Tokyo,JP", "New York,US") 1415for 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("") 1516London,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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/10/27 08:17

JSONDecodeErrorってエラーなんで、単純にr.textがJSONとして不正な内容なんじゃないですかね? 中身確認しましたか?
PPAP_AWS

2020/10/27 08:21

ご返信ありがとうございます。 確認方法など教えていただけると助かります。
gentaro

2020/10/27 08:47

print(r.text)とか
PPAP_AWS

2020/10/27 08:55

ご返信ありがとうございます。 確認方法を実行した内容を追記させてもらいました。 また、エラーなら実行結果を通すことも同様に、内容がよくわからないため、ご説明してもらえると幸いです。 よろしくお願いいたします。
gentaro

2020/10/27 08:58

いや書いてあるでしょ。中学生レベルの英語なんだから丸投げせず読もう。 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を使ってるのかわからないとこれ以上回答のしようがない。
PPAP_AWS

2020/10/27 09:02

ご丁寧な説明ありがとうございます。 スクレイピング先のLinkを追記させていただきました。 APIアドレスの確認方法なども教えていただけると幸いです。
gentaro

2020/10/27 09:04

あなたがそのサイトのドキュメントを読んで、APIを利用するために必要だと思って参考にしたドキュメントの記述と、それに沿って実装した処理の全てを記載してください。
PPAP_AWS

2020/10/27 09:08

追記いたしました。 追記した内容が、合っているかご確認お願いします。
gentaro

2020/10/27 09:11

それはAPIの「概要」であって、それだけで実装の方法がわかるはずがありません。 ちゃんとドキュメントを読んでないのなら先ず読みましょう。 またコード上いきなり出てくる「api」がどこで定義されたものなのかもわかる記述になっていません。 回答者はエスパーじゃないので、そんな情報で回答できるわけがありません。 ちゃんと関係するコードの「全て」を提示しましょう。
gentaro

2020/10/27 09:13

コードについて、基本的に「第三者がそれをコピペすればすぐ動く」レベルのコードを提示してください。 どうしてもそれが不可能な場合、不可能な理由を述べましょう。
ebal

2020/10/27 09:14

URLについて 記載されているAPI URLがおそらく間違いです. Open Weather Map のエンドポイント形式以前に流石にapi_keysで終わるエンドポイントから天気情報は取得できないでしょう. 記載されているコードの前にフォーマット文字列apiの定義があり,そこでAPIキーの入力まではされていることと思います.正しいエンドポイントを利用することが第一でしょう. ただ,citiesの定義など足りない箇所が多いのでsecret部分(多分APIキーのみ)以外すべての処理を記載してください.
PPAP_AWS

2020/10/27 09:23

ご説明ありがとうございます。 確認してみます!
PPAP_AWS

2020/10/28 04:27

ご返事遅れてしまいすいませ。 正しいエンドラインは、http://api.openweathermap.org/data/2.5/forecast?id=524901&appid={API key} URL の最後尾の[]の中のAPI キーをの部分を取得したAPIを貼り付けすればよろしいのでしょうか。してみたのですが、エラーが出てしまいます。 また、secret部分をもう少し、初心者向けにご説明してくださると助かります。 よろしくお願いいたします。
guest

回答1

0

自己解決

自己解決に努めます。

投稿2020/10/28 09:05

PPAP_AWS

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問