商品ページからボタン一つで情報を取り込むVBAプログラムの作り方(Amazon編④)


【過去の記事一覧】

商品ページからボタン一つで情報を取り込むVBAプログラムの作り方(Amazon編①)
商品ページからボタン一つで情報を取り込むVBAプログラムの作り方(Amazon編②)
商品ページからボタン一つで情報を取り込むVBAプログラムの作り方(Amazon編③)

今回でこのAmazon編シリーズは最後になります。

残る処理は、画像ファイル名をどうやって商品毎に個別に設定するかという部分ですね。

通常その様な処理を組む場合、『商品ごとに存在する、重複しない個別の情報』が必要になります。

大体のショッピングサイトでは「商品ID」という個別の英数字が設定されていますね。Amazonでは「ASIN(Amazon Standard Identification Number)」という名前で管理されていますので、この番号を使用しましょう。


スポンサーリンク

8.ASINの取得方法

このASINコードってどこに記載されているか知っていますか?

Amazonを利用した事があれば、必ず1回は見たことあると思いますが・・・普通Amazonを利用する時にASINの情報なんて見ないと思いますので、多分見ていたとしても覚えていないですよね。

ページを少しスクロールしたこの辺(下図)にあります。

そしてそのソースがこちらです。

ここから取得しても良いんですが・・・見ての通り商品名や価格と違ってASINのタグにidが設定されている訳でも無いので、その少し上にあるidの付いているdivタグ辺りから文字列判定で抽出するしかありません。

正直面倒臭いですよね。

それに少し表記や形が変わったら取得できなくなってしまいそうなので、あまりおすすめ出来ません。

という事で他に使えそうなものが無いかなーとHTMLソースを探してみると・・・

ありました。

大体こういうページって、表示されない部分に情報が書かれている事が結構多いんですよね。

ということでこの”ASIN”というidを使えば簡単にASINデータを取得できそうなので、早速やってみましょう。

Sub main()
    Dim objIE As InternetExplorer       'Amazonの商品ページを格納
    Dim sProductName As String          '商品名
    Dim sProductPrice As String         '商品価格
    Dim sProductExplain As String       '商品説明
    Dim sProductASIN As String          'ASIN

'-----------------------------省略-----------------------------
    
    sProductName = Trim(objIE.document.getElementById("productTitle").innerText)
    sProductPrice = Trim(Replace(objIE.document.getElementById("priceblock_ourprice").innerText, "¥", ""))
    sProductASIN = objIE.document.getElementById("ASIN").Value
    
    MsgBox sProductASIN

ASIN格納用の変数を一つ追加し、商品価格を取得する処理の後ろにASIN取得用のコードを追加致しました。

上記コードに変更して処理を実行してみると、メッセージボックスでASINの値が表示されると思います。

※Msgboxを使わなくても、ブレークポイントを設定して確認で構いません。

これで無事ASINも取得できる様になりましたので、画像ファイルのダウンロード処理の部分も修正します。

    'liタグから画像URLを抽出し、ダウンロード
    iPicNum = 0
    Set objLiTags = objIE.document.getElementsByTagName("li")
    For Each objLi In objLiTags
        On Error Resume Next
        sClassName = objLi.className
        On Error GoTo 0

        If InStr(LCase(sClassName), "itemno") > 0 Then
            sPicURL = objLi.getElementsByTagName("img")(0).src
            Call URLDownloadToFile(0, sPicURL, ThisWorkbook.path & _
                 "\" & sProductASIN & "_" & iPicNum & ".jpg", 0, 0)
            iPicNum = iPicNum + 1
        End If
    Next

今まで「”\picture_”」としていた部分を、「”\” & sProductASIN & “_”」に修正致しました。

これで画像ファイル名に自動的にASINが使われる様になったため、以後は画像ファイル名の重複無しに保存できる様になると思います。

いかがでしたでしょうか。

まだまだ取れるデータはたくさんあります・・・というより、少なくとも見えている情報は全て取得できるはずですが、Amazon編はここまでとなります。

今までの内容を参考にして、必要なデータがあればそれも取得できる様に改良してみて下さい。

Amazonのサイトから自由にデータが取得できる様になれば、Yahooや楽天、その他の海外サイト等からでも自由にデータを取得できる様なものを作れる・・・と思いますよ!きっと。多分。

商品データの取得を外注している方は、ぜひプログラムを作って自動化される事をおすすめ致します。毎回何万も支払ってデータを取得してもらうなんてもったいないですからね。

また何か作り方ネタがあれば公開していきたいと思います。

それでは!

関連記事と広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする