物販いろいろと悩み中
とりあえず価格差をつかもう!
てことでYahooさんの価格も取ってみることにしました
YahooショッピングAPIはID連携いらない
YahooさんのAPIには2種類あるらしい
1.ID連携してショップの運営を効率化するAPI
2.ID連携不要で価格やランキングデータを取ってくるAPI
今回やりたいことは2です。
ID発行までの流れ
まずYahooIDは作っておきましょう
私はログインしっぱなしだったので分かりませんが多分必要
次に
「Yahoo!ショッピングのストア運営をサポートするAPIをご利用にならない場合」
の開発申請URL
アプリケーションの管理:Yahoo!デベロッパーネットワーク
私は今回は
クライアントサイド
個人事業主
屋号やらはそのまま
アプリ名も適当でItemSearchとか
サイトURLはこちらのブログ
説明も「取り扱いがあるかを調べる」みたいな感じ
スコープは使わない
ガイドラインに同意
こんだけでサクッとIDを頂けます。
1日50000リクエストまでOKらしい。
1日は86400秒なので、2秒に1回ですね
主要なYahoo shopping APIへのリンク
こちらの下段にまとまってます
ショッピング - Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークでは、Yahoo!ショッピングが持つ日本最大級の商品データやEC機能をWeb API形式で提供しています。開発者はWeb APIで取得したデータを活用し、自分のサイトやアプリケーションにマッシュアップすることが出来ます。
よく使うのは
商品検索
Yahoo!デベロッパーネットワーク
カテゴリランキング
カテゴリランキング - Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークで公開しているカテゴリランキング APIは、Yahoo!ショッピングの商品の売り上げランキング情報を取得機能を提供しています。
キーワードランキング
キーワードランキング - Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークで公開しているキーワードランキング APIは、Yahoo!ショッピングで検索されている人気の検索キーワードを取得する機能を提供しています。
あたりかなぁ?
PythonでYahooAPIをたたいてみる
インポートしておくもの
import requests
少ないな(笑)
Jan codeでデータを取ってみます
お試しはこちら
searchJanCode = '4902370542912'
一時高額になってたポータブルゲーム機のJANコードです
#URL設定
YahooItemSearchURL = "https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch"
#辞書設定
params = {}
params ['appid'] = '各自のアプリケーションID'
params ['jan_code'] = 'jan_code'
params ['jan_code'] = searchJanCode
response = requests.get(YahooItemSearchURL,params)
results = response.json()
Yitems = results['totalResultsAvailable']
YitemName = results['hits'][0]['name']
Yprice = results['hits'][0]['price']
Ytax = results['hits'][0]['priceLabel']['taxable']
Yreview = results['hits'][0]['review']['rate']
Ybrand = results['hits'][0]['brand']['name']
↑で実行してからの
print(Yitems,YitemName,Yprice,Ytax,Yreview,Ybrand)
>>>558 任天堂 (新モデル)Nintendo Switch 本体(Joy-Con(L) ネオンブルー/ (R) ネオンレッド) 返品種別B 32978 True 4.8 任天堂
ちゃんと返ってきました
Yahoo API を利用する注意事項
※短い時間の間に同一URLに大量にアクセスを行った場合、一定時間利用できなくなることもございます。(1クエリー/秒)
とありますので、time.sleep(1)は必須っぽいです。
2でいいんじゃないかな
PythonでYahooのショッピングAPIからデータを取ってくるまとめ
他に欲しいデータがある場合は
たとえば商品検索
Yahoo!デベロッパーネットワーク
下段のレスポンスフィールドのコピペ
totalResultsAvailable | integer | 総検索ヒット件数 |
totalResultsReturned | integer | 返却された商品件数 |
firstResultsPosition | integer | 最初のデータが何件目にあたるか(最初=1) |
request | ||
request/query | string | 検索クエリ |
hits | ||
hits/index | integer | 検索結果の順番 |
hits/name | string | 商品名 |
hits/description | string | 商品説明 |
hits/headLine | string | キャッチコピー |
hits/inStock | boolean | true:在庫ありのみ false:在庫なしのみ |
hits/url | string | 商品URL |
hits/code | string | 商品コード (seller_managed_item_id) |
hits/condition | string | new:新品 used:中古 |
hits/premiumPrice | integer | レミアム会員価格 |
hits/premiumDiscountType | string | プレミアム割引種別 normal:プレミアム会員価格と通常販売価格から算出 original:プレミアム会員価格とメーカー希望小売価格から算出 sale:セール価格と通常価格から算出 |
hits/premiumDiscountRate | integer | プレミアム割引率 |
hits/imageId | string | 画像ID |
hits/image | ||
hits/image/small | string | 76×76サイズの画像URL |
hits/image/medium | string | 146×146サイズの画像URL |
hits/exImage | ||
hits/exImage/url | image_sizeで指定した画像サイズの画像URL | |
hits/exImage/width | image_sizeで指定した画像の幅 | |
hits/exImage/height | image_sizeで指定した画像の高さ | |
hits/review | ||
hits/review/rate | float | レビュー平均 |
hits/review/count | integer | レビュー件数 |
hits/review/url | string | レビューページURL |
hits/affiliateRate | float | アフィリエイト料率(0.1刻み) |
hits/price | integer | 価格 |
hits/priceLabel | ||
hits/priceLabel/taxable | boolean | 税込み価格かどうか |
hits/priceLabel/premiumPrice | boolean | 税込み価格かどうか |
hits/priceLabel/defaultPrice | integer | 通常価格 |
hits/priceLabel/discountedPrice | integer | セール価格 |
hits/priceLabel/fixedPrice | integer | 定価(メーカー小売希望価格) |
hits/priceLabel/periodStart | integer | セール期間開始日時(タイムスタンプ) |
hits/priceLabel/periodEnd | integer | セール期間終了日時(タイムスタンプ) |
hits/point | ||
hits/point/amount | integer | 基本ポイント数 (Tポイント) |
hits/point/times | integer | 基本ポイント倍率 (Tポイント) |
hits/point/bonusAmount | integer | ストアボーナス数 (PayPayボーナスライト) |
hits/point/bonusTimes | integer | ストアボーナス倍率 (PayPayボーナスライト) |
hits/point/premiumAmount | integer | プレミアム会員向けの基本ポイント数 (Tポイント) |
hits/point/premiumTimes | integer | プレミアム会員向けの基本ポイント倍率 (Tポイント) |
hits/point/premiumBonusAmount | integer | プレミアム会員向けのストアボーナス数 (PayPayボーナスライト) |
hits/point/premiumBonusTimes | integer | プレミアム会員向けのストアボーナス倍率 (PayPayボーナスライト) |
hits/shipping | ||
hits/shipping/name | string | 名前(コードに紐づく名前) |
hits/shipping/code | integer | 送料条件コード 1:設定無し 2:送料無料 3:条件付き送料無料 |
hits/genreCategory | ||
hits/genreCategory/id | integer | ジャンルカテゴリID |
hits/genreCategory/name | string | ジャンルカテゴリ名 |
hits/genreCategory/depth | integer | ジャンルカテゴリの階層 |
hits/parentGenreCategories[](親ジャンルカテゴリ) | list | 親ジャンルカテゴリ |
hits/parentGenreCategories/depth | integer | ジャンルカテゴリの階層 |
hits/parentGenreCategories/id | integer | 上位ジャンルカテゴリID |
hits/parentGenreCategories/name | string | 上位ジャンルカテゴリ名 |
hits/brand(ブランド) | ||
hits/brand/id | integer | ブランドID |
hits/brand/name | string | ブランド名 |
hits/parentBrands[] | list | 親ブランド |
hits/parentBrands/id | integer | ブランドID |
hits/parentBrands/name | string | ブランド名 |
hits/janCode | string | JANコード |
hits/isbn | string | ISBNコード |
hits/releaseDate | string | 発売日 |
hits/seller | ||
hits/seller/sellerId | string | ストアID |
hits/seller/name | string | ストア名 |
hits/seller/url | string | ストアURL |
hits/seller/isBestSeller | boolean | ベストストアかどうか true:ベストストアである false:ベストストアではない |
hits/seller/isPMallSeller | boolean | PayPayモール 出店ストアかどうか true:出店している false:出店していない |
hits/seller/payment | string | 支払いコード |
hits/seller/review | ||
hits/seller/review/rate | float | ストアレビュー平均 |
hits/seller/review/count | integer | ストアレビュー件数 |
hits/seller/imageId | string | ストア画像ID |
hits/delivery | ||
hits/delivery/area | string | 都道府県コード 01 ~ 47 |
hits/delivery/deadLine | integer | 注文締め時間 1 ~ 24 |
hits/delivery/day | integer | 配送にかかる日数 0:きょうつく 1:あすつく |
他のAPIにもいろいろと情報はあるかと思います~