PythonでYahooのショッピングAPIからデータを取ってくる

python

物販いろいろと悩み中

とりあえず価格差をつかもう!

てことでYahooさんの価格も取ってみることにしました

YahooショッピングAPIはID連携いらない

YahooさんのAPIには2種類あるらしい

1.ID連携してショップの運営を効率化するAPI
2.ID連携不要で価格やランキングデータを取ってくるAPI

今回やりたいことは2です。

ID発行までの流れ

まずYahooIDは作っておきましょう
私はログインしっぱなしだったので分かりませんが多分必要

次に

Yahoo!ショッピングのストア運営をサポートするAPIをご利用にならない場合

の開発申請URL

アプリケーションの管理:Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークは、開発者がXMLやRSSなどを利用して、自分のサイトやアプリケーションをYahoo! JAPANのWebサービスと融合するお手伝いをします。

私は今回は

クライアントサイド
個人事業主
屋号やらはそのまま
アプリ名も適当でItemSearchとか
サイトURLはこちらのブログ
説明も「取り扱いがあるかを調べる」みたいな感じ
スコープは使わない
ガイドラインに同意

こんだけでサクッとIDを頂けます。
1日50000リクエストまでOKらしい。

1日は86400秒なので、2秒に1回ですね

主要なYahoo shopping APIへのリンク

こちらの下段にまとまってます

ショッピング:ショッピング - Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークでは、Yahoo!ショッピングが持つ日本最大級の商品データやEC機能をWeb API形式で提供しています。開発者はWeb APIで取得したデータを活用し、自分のサイトやアプリケーションにマッシュアップすることが出来ます。

よく使うのは

商品検索

ショッピング:商品検索(v3) - Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークで公開している商品検索 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からデータを取ってくるまとめ

他に欲しいデータがある場合は

たとえば商品検索

ショッピング:商品検索(v3) - Yahoo!デベロッパーネットワーク
Yahoo!デベロッパーネットワークで公開している商品検索 APIは、Yahoo!ショッピングの商品検索結果を取得する機能を提供しています。

下段のレスポンスフィールドのコピペ

totalResultsAvailableinteger総検索ヒット件数
totalResultsReturnedinteger返却された商品件数
firstResultsPositioninteger最初のデータが何件目にあたるか(最初=1)
request
request/querystring検索クエリ
hits
hits/indexinteger検索結果の順番
hits/namestring商品名
hits/descriptionstring商品説明
hits/headLinestringキャッチコピー
hits/inStockbooleantrue:在庫ありのみ
false:在庫なしのみ
hits/urlstring商品URL
hits/codestring商品コード (seller_managed_item_id)
hits/conditionstringnew:新品
used:中古
hits/premiumPriceintegerレミアム会員価格
hits/premiumDiscountTypestringプレミアム割引種別
normal:プレミアム会員価格と通常販売価格から算出
original:プレミアム会員価格とメーカー希望小売価格から算出
sale:セール価格と通常価格から算出
hits/premiumDiscountRateintegerプレミアム割引率
hits/imageIdstring画像ID
hits/image
hits/image/smallstring76×76サイズの画像URL
hits/image/mediumstring146×146サイズの画像URL
hits/exImage
hits/exImage/urlimage_sizeで指定した画像サイズの画像URL
hits/exImage/widthimage_sizeで指定した画像の幅
hits/exImage/heightimage_sizeで指定した画像の高さ
hits/review
hits/review/ratefloatレビュー平均
hits/review/countintegerレビュー件数
hits/review/urlstringレビューページURL
hits/affiliateRatefloatアフィリエイト料率(0.1刻み)
hits/priceinteger価格
hits/priceLabel
hits/priceLabel/taxableboolean税込み価格かどうか
hits/priceLabel/premiumPriceboolean税込み価格かどうか
hits/priceLabel/defaultPriceinteger通常価格
hits/priceLabel/discountedPriceintegerセール価格
hits/priceLabel/fixedPriceinteger定価(メーカー小売希望価格)
hits/priceLabel/periodStartintegerセール期間開始日時(タイムスタンプ)
hits/priceLabel/periodEndintegerセール期間終了日時(タイムスタンプ)
hits/point
hits/point/amountinteger基本ポイント数 (Tポイント)
hits/point/timesinteger基本ポイント倍率 (Tポイント)
hits/point/bonusAmountintegerストアボーナス数 (PayPayボーナスライト)
hits/point/bonusTimesintegerストアボーナス倍率 (PayPayボーナスライト)
hits/point/premiumAmountintegerプレミアム会員向けの基本ポイント数 (Tポイント)
hits/point/premiumTimesintegerプレミアム会員向けの基本ポイント倍率 (Tポイント)
hits/point/premiumBonusAmountintegerプレミアム会員向けのストアボーナス数 (PayPayボーナスライト)
hits/point/premiumBonusTimesintegerプレミアム会員向けのストアボーナス倍率 (PayPayボーナスライト)
hits/shipping
hits/shipping/namestring名前(コードに紐づく名前)
hits/shipping/codeinteger送料条件コード
1:設定無し
2:送料無料
3:条件付き送料無料
hits/genreCategory
hits/genreCategory/idintegerジャンルカテゴリID
hits/genreCategory/namestringジャンルカテゴリ名
hits/genreCategory/depthintegerジャンルカテゴリの階層
hits/parentGenreCategories[](親ジャンルカテゴリ)list親ジャンルカテゴリ
hits/parentGenreCategories/depthintegerジャンルカテゴリの階層
hits/parentGenreCategories/idinteger上位ジャンルカテゴリID
hits/parentGenreCategories/namestring上位ジャンルカテゴリ名
hits/brand(ブランド)
hits/brand/idintegerブランドID
hits/brand/namestringブランド名
hits/parentBrands[]list親ブランド
hits/parentBrands/idintegerブランドID
hits/parentBrands/namestringブランド名
hits/janCodestringJANコード
hits/isbnstringISBNコード
hits/releaseDatestring発売日
hits/seller
hits/seller/sellerIdstringストアID
hits/seller/namestringストア名
hits/seller/urlstringストアURL
hits/seller/isBestSellerbooleanベストストアかどうか
true:ベストストアである
false:ベストストアではない
hits/seller/isPMallSellerbooleanPayPayモール 出店ストアかどうか
true:出店している
false:出店していない
hits/seller/paymentstring支払いコード
hits/seller/review
hits/seller/review/ratefloatストアレビュー平均
hits/seller/review/countintegerストアレビュー件数
hits/seller/imageIdstringストア画像ID
hits/delivery
hits/delivery/areastring都道府県コード 01 ~ 47
hits/delivery/deadLineinteger注文締め時間 1 ~ 24
hits/delivery/dayinteger配送にかかる日数
0:きょうつく
1:あすつく

他のAPIにもいろいろと情報はあるかと思います~

タイトルとURLをコピーしました