前回の記事はこちら。
商品説明を取り出したかったのにできなかったので違う要素を取り出してみました。
さて今回ははるか先生の記事を読んで早速The Fastest JSON visualizer を使ってみることに。
なるほど、JSONの構造がすごーく良くわかるように。試しに、商品名(itemName)を一つ出力してみました。商品説明より短いし。
import requests
import json
shop_id="yoshinoya-shop"
url=f"https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222?applicationId=(私のアプリID)&shopCode={shop_id}"
response = requests.get(url)
data = json.loads(response.text)
print(data['Items'][0]['Item']['itemName'])
printの後ろがほぼコピペで行けるのが神。
実行結果として
「吉野家常温フリーズドライ汁物 牛すい40袋【常温配送/冷凍同梱不可】」
が、無事に表示されました✨
私にとってのHello Worldが牛すいになった瞬間です。
さてさて、というわけでページ上の全ての商品名を引っ張り出してみますか。と思い先ほどのThe Fastest JSON visualizerの中身をざっと見てみる。
すると、どうやら['Items'][0]['Item']['itemName']の数字部分をどんどん増やしていけば良いらしい。最大29。
これでfor文を作ればよいのだな!?と思ったけどProgateの知識だけで作るには1~29までのリストをつくって・・・という方法しか思いつきませんでした。
でもなーんかこれができそうな方法知ってる気がする・・・と思い前に読んだ本を開く。
(↑レベル感的にはProgateと並行して見るのにちょうど良い感じでした)
・・・あった!range関数!!!
range(x,y)とするとxからy-1までの数字を要素として持ったリストになるというエラい子です。
早速これを使って書き書き。
import requests
import json
shop_id="yoshinoya-shop"
url=f"https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222?applicationId=(私のアプリID)&shopCode={shop_id}"
response = requests.get(url)
data = json.loads(response.text)
for number in range(0,30):
print(data['Items'][number]['Item']['itemName'])
そして出てきたのはこちら!!
吉野家常温フリーズドライ汁物 牛すい40袋【常温配送/冷凍同梱不可】
吉野家 缶飯牛焼肉丼6缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】台風や地震の備えに
吉野家 夫婦茶碗セット【常温/冷凍配送可】
吉野家 冷凍新・焼鶏丼の具10袋セット(湯せん専用)
吉野家 冷凍牛カルビ焼5袋セット トレー商品 冷凍食品
吉野家 缶飯焼鶏12缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】 吉野家唐辛子6本セット【常温配送/冷凍同梱不可】
吉野家 缶飯焼塩さば6缶セット【非常用保存食】【送料無料】台風や地震の備えに
吉野家 缶飯豚丼12缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】
吉野家 冷凍新・焼鶏丼の具30袋セット(湯せん専用)
吉野家常温フリーズドライ汁物 とん汁40袋【常温配送/冷凍同梱不可】
吉野家 冷凍 刻みうなぎ10袋20食セット 送料無料
吉野家 冷凍 刻みうなぎ5袋10食セット【送料無料】
吉野家 特製牛肉まん6個入り【冷凍】100g(3個入り)×2袋
吉野家 新・減塩豚丼の具30袋セット
吉野家 新・減塩豚丼の具30袋セット
吉野家 ペプ牛135g×5袋セット(ペプチド入り牛丼の具) 冷凍食品
牛丼 吉野家 食べ比べセット 牛丼の具135gVS豚丼の具120g(減塩仕様)10袋+紅生姜付 お試し 簡単 便利 夜食 おつまみ 昼ごはん ストック 時短 働くママ 冷凍食品 お弁当 おかず クール宅急便 取り寄せ グルメ 吉野家 牛丼
吉野家 牛豚缶飯詰め合わせセット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】台風や地震の備えに
吉野家 缶飯焼鶏6缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】台風や地震の備えに
吉野家 缶飯牛焼肉丼12缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】
【送料無料】吉野家 冷凍国産牛焼肉丼の具10袋セット 吉野家 冷凍 刻みうなぎ1袋2食セット【お一人様一個限り】
吉野家 缶飯牛丼12缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】
吉野家 冷凍牛カルビ焼10袋セット トレー商品 冷凍食品
吉野家 特製牛肉まん3個入り【冷凍】100g(3個入り)×1袋
吉野家 冷凍 紅生姜おためし5袋セット【冷凍食品】
吉野家 冷凍牛すじ8袋
吉野家 缶飯豚しょうが焼6缶セット【非常用保存食】【常温配送/冷凍同梱不可】【送料無料】台風や地震の備えに
吉野家常温 詰替え唐辛子5袋【追跡可能メール便配送/他商品同梱不可】【こちらの商品はお一人様1個限定となります】
・・・感激!!!すごく何かできた感があります。それにしても牛丼食べたい。
メモ:
・今回はrangeの最後の数字がわかったからいいけどそうでない場合はどうしたらいいのか。また調べる。
・次は商品リンクでもつけてみる。
<追記>
親切な皆様のおかげでrangeを使う必要が無くなりました。これで最後の数字とか気にしなくて良いように。バグも起きにくいらしい。
import requests
import json
shop_id="yoshinoya-shop"
url=f"https://app.rakuten.co.jp/services/api/IchibaItem/Search/20140222?applicationId=(アプリID)&shopCode={shop_id}"
response = requests.get(url)
data = json.loads(response.text)
for gyudon in data["Items"]:
print(gyudon['Item']['itemName'])