見出し画像

Yahoo API を利用して商品情報を取得する方法

こんにちは!Smileです。

今回はYahooショッピングAPIを利用して、商品情報を取得する方法を解説していきます!

YahooショッピングAPIキーを取得する

YahooショッピングAPIを利用するには、まずはアプリケーションIDを取得する必要があります。

アプリケーションIDを取得するにはまずはYahoo Japan IDが必要になります。

Yahoo! Japan IDを持っていない場合でもアプリケーションID取得ページから、Yahoo! Japan IDを取得できますので、メールアドレスを使用して取得してください。
Yahoo!Japan デベロッパーネットワーク

取得できましたら、ログインして「新しいアプリケーションを開発」を押してください。

スクリーンショット 2021-09-20 153024

次に、

アプリケーションの種類を「サーバーサイド(Yahoo! ID連携 v2)」
利用者情報を「個人」
アプリケーション名は任意の名前に設定し、
サイトURLはそのまま
アプリケーションの説明も空欄のまま
ガイドラインに同意、
確認を押す

上記手順で選択していけば新しいアプリケーションが作成されます。

作成できたら、アプリケーション一覧で先ほど作成したアプリケーションを選択します。

選択したら、一番上に「Client ID」と「シークレット」と隣に長い文字列が表示されていますので、「Client ID」がアプリケーションIDになりますので、それをメモ帳などにコピー&ペーストをして保存しておいてください。

スクリーンショット 2021-09-20 155543

以上で、アプリケーションIDの取得方法は終わりです。

次は、アプリケーションIDを利用してYahooショッピングデータを取得していきます。

Yahooショッピングデータを取得する

今回はキーワードと最低金額・最高金額を設定して100件の商品データを取得するコードを紹介します。

以下にまずはコードを添付致します。

import requests
import json

Lowest_price = input("最低価格 ----> ")
Highest_price = input("最高価格 ----> ")
item_name = input('キーワード-->')

appid = "Client ID"
url = 'https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch?appid={}&price_from={}&price_to={}&query={}&results=100'.format(appid, Lowest_price, Highest_price, item_name)
call = requests.get(url)
res_dict = json.loads(call.content)
count = len(res_dict['hits'])

for i in range(count):
   print("商品名:", res_dict['hits'][i]['name'])
   print("説明:", res_dict['hits'][i]['description'])
   print("価格:", res_dict['hits'][i]['price'])
   print("商品コード:", res_dict['hits'][i]['code'])
   print("JANコード:", res_dict['hits'][i]['janCode'])
   print("商品URL", res_dict['hits'][i]['url'])

まずは、必要なライブラリをインポートします。

import requests
import json

次に、「最低価格」「最高価格」と「キーワード」を代入する変数を設定しています。

Lowest_price = input("最低価格 ----> ")
Highest_price = input("最高価格 ----> ")
item_name = input('キーワード-->')

次は、以下の部分に先ほどメモ帳に保存しておいたアプリケーションIDを入力してください。

appid = "Client ID"

次に以下の部分に設定した最低価格と最高価格、キーワードを設定されるようにコードを書きます。

url = 'https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch?appid={}&price_from={}&price_to={}&query={}&results=100'.format(appid, Lowest_price, Highest_price, item_name)

「appid={}」の部分にアプリケーションID
「price_from={}」の部分に最低価格
「price_to={}」の部分に最高価格
「query={}」の部分にキーワードが入るようにformatメソッドを利用して設定します。
「results=100」は取得結果を100件取得するという意味になります。

次に、設定したURLをrequestsライブラリを使用して、情報をリクエストして、返ってきた情報を辞書をJSON文字列として整形してres_dict変数に代入しています。

call = requests.get(url)
res_dict = json.loads(call.content)

次に以下の部分では、返ってきた件数をcount変数に代入しています。
今回は100件取得しています。

count = len(res_dict['hits'])

次は、取得した件数分、for文で「商品名・商品説明・価格・商品コード・JANコード・商品URL」を出力しています。

for i in range(count):
   print("商品名:", res_dict['hits'][i]['name'])
   print("説明:", res_dict['hits'][i]['description'])
   print("価格:", res_dict['hits'][i]['price'])
   print("商品コード:", res_dict['hits'][i]['code'])
   print("JANコード:", res_dict['hits'][i]['janCode'])
   print("商品URL", res_dict['hits'][i]['url'])

以上で、各コードの説明は以上となります。

実際にコードを実行して結果を確認してみてください。

今回は最低価格を1000円、最高価格1万円、キーワードをイヤホンで設定した場合の取得結果の一部を以下に添付します。

スクリーンショット 2021-09-20 163152

リクエストする際の設定内容や取得内容もほかにも色々ありますので、APIドキュメントを見ながら色々試してみてください。


以上で、Yahoo API を利用して商品情報を取得する方法の説明は終わりです!

何かわからないことがありましたら、お気軽にご連絡ください♪

この記事が気に入ったらサポートをしてみませんか?