見出し画像

【ゆるプロ!番外編】YahooのショッピングAPIで商品検索する

ゆるいプログラミング講座、略して「ゆるプロ!」
これは気軽に気楽に試せるゆるーいプログラミング学習コンテンツである。今回のお題は「YahooのショッピングAPIで商品検索する」


一言)

資産リストを作ろうと思い、GTINコードが分かれば商品名や金額を作成できないかと思い立ち、Pythonで商品名や金額の取得を試みた話

前提)

  • Yahoo! JAPAN ID

  • Yahoo!デベロッパーネットワークのClient ID

  • Pythonがインストール済みであること

  • Windows

  • chatgpt3.5

登録方法についてはよく調べること

例)YahooのショッピングAPIで商品検索する

YahooのショッピングAPIを使用して商品検索を行う。jsonやxmlをwebから取得することは初めてで、chatgptにコードの書き方や意味などを教わった。下手にGoogle検索するより早いかもしれない。なお、コードは実行できてはいるが、公式のリソースから意味を全て把握して検証しているわけではないので、何か整合性が取れていない部分はあるかもしれない

import requests
import json

url = "https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch"
app_id = "" # 取得したaap_id
GTIN = "9784845633852"

# パラメータを辞書で指定
params = {
    'appid': app_id,
    'jan_code':GTIN,
}

def get_json_data():
    try:
        # HTTP GETリクエストを送信
        response = requests.get(url, params=params)

        # ステータスコードが200(成功)の場合
        if response.status_code == 200:
            # JSONデータを取得
            json_data = response.json()

            # 取得したJSONデータを整形して表示
            print("JSONデータ:")
            print(json.dumps(json_data, indent=2, ensure_ascii=False))

        else:
            # エラーが発生した場合はステータスコードを表示
            print(f"エラー: ステータスコード {response.status_code}")

    except Exception as e:
        # 例外が発生した場合はエラーメッセージを表示
        print(f"エラー: {e}")


if __name__ == "__main__":
   
    # 関数を呼び出してJSONデータを取得して表示
    get_json_data()

結果)

ざっくり、欲しい情報は得られていそう

JSONデータ:
{
  "totalResultsAvailable": 24,
  "totalResultsReturned": 1,
  "firstResultsPosition": 1,
  "request": {
    "query": ""
  },
  "hits": [
    {
      "index": 1,
      "name": "ギターのためのコード理論体系",
      "description": "関連words:リットーミュージック/▼コンテンツ/<基礎編>/第一章 指板の仕組み/1. 弦楽器の仕組み/2. フレットボードと鍵盤の対応/3. フレットボードと五線譜の対応/4. フレットボード上の音程/5. 同一ポジションにおける音程の拡張/ 第二章 コードの仕組み/1.コードシンボル表記によるギターの伴奏譜/2.コードの定義/3. メジャーコード/4.マイナーコード/5.その 他の三和音のオープンコード/6.セブンスコード/7.その他の四和音/8.バレーコード/第三章 音階と調性の仕組み/1.メジャーキーのコード進行/2.移調/3.マイナーキーのコード進行/4.テンションコード/5.ドミナントコードのテンション/第四章 ロックギター奏法の仕組み/1.パワーコード/2.ペンタトニックスケール/3.ブルース進行/<応用編>/第五章 ガイドトーンコンピング/1.ルート+ガイドト ーン/2.ルートと各テンションの位置関係/3.ルート+ガイドトーン+テンション/4.アンサンブルでの演奏への応用/5.増五度のガイドトーン/第六章 ドロップ2ヴォイシング/1.ドロップ2ヴォイシングの作り方/2.コードソロの実践/3. 非ダイアトニックコードのドロップ2ヴォイシング/他",
      "headLine": "",
      "url": "https://store.shopping.yahoo.co.jp/gakufunets/f0182374.html",
      "inStock": true,
      "code": "gakufunets_f0182374",
      "condition": "new",
      "imageId": "gakufunets_f0182374",
      "image": {
        "small": "https://item-shopping.c.yimg.jp/i/c/gakufunets_f0182374",
        "medium": "https://item-shopping.c.yimg.jp/i/g/gakufunets_f0182374"
      },
      "review": {
        "count": 1,
        "url": "https://shopping.yahoo.co.jp/review/item/list?store_id=gakufunets&page_key=f0182374",
        "rate": 0
      },
      "affiliateRate": 1,
      "price": 3080,
      "premiumPrice": 3080,
      "premiumPriceStatus": false,
      "premiumDiscountRate": null,
      "premiumDiscountType": null,
      "priceLabel": {
        "taxable": true,
        "defaultPrice": 3080,
        "discountedPrice": null,
        "fixedPrice": null,
        "premiumPrice": null,
        "periodStart": null,
        "periodEnd": null
      },
      "point": {
        "amount": 0,
        "times": 0,
        "bonusAmount": 140,
        "bonusTimes": 5,
        "premiumAmount": 0,
        "premiumTimes": 0,
        "premiumBonusAmount": 140,
        "premiumBonusTimes": 5
      },
      "shipping": {
        "code": 2,
        "name": "送料無料"
      },
      "genreCategory": {
        "id": 11477,
        "name": "音楽一般の本",
        "depth": 4
      },
      "parentGenreCategories": [
        {
          "id": 10002,
          "depth": 1,
          "name": "本、雑誌、コミック"
        },
        {
          "id": 11430,
          "depth": 2,
          "name": "楽譜、音楽書"
        },
        {
          "id": 11468,
          "depth": 3,
          "name": "音楽理論、音楽評論の本"
        }
      ],
      "brand": {
        "id": null,
        "name": ""
      },
      "parentBrands": [],
      "janCode": "9784845633852",
      "payment": "16384 16 4096 1 4",
      "releaseDate": null,
      "seller": {
        "sellerId": "gakufunets",
        "name": "楽譜ネッツ",
        "url": "https://store.shopping.yahoo.co.jp/gakufunets/",
        "isBestSeller": false,
        "review": {
          "rate": 4.74,
          "count": 5622
        },
        "imageId": "gakufunets_1"
      },
      "delivery": {
        "deadLine": null,
        "day": null,
        "area": ""
      }
    }
  ]
}

おわり!