CoCoのYDブログ

心に思い浮かんだことを少し掘り下げ発信します

【VBA】Amazonで商品検索

こんにちは

今回はAmazonで商品検索をします。

言葉で言うのは簡単なんですけどね。

 

Amazonでの商品検索

1.IEを開く

2.Amazonにアクセス

3.欲しい商品名を入力

4.表示された商品のページを開く

 

すごく・・・簡単です。

これをVBAで表示すると結構なコードになりそうw

 

ではコードを見ていきましょう

サンプルコード

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Amazon_search()
    Dim ie As InternetExplorer
    Dim textInput As IHTMLElement

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.navigate "https://www.amazon.co.jp/"

    Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE
        DoEvents
    Loop
    Sleep 3000

    For Each textInput In ie.document.getElementsByTagName("input")
        If InStr(textInput.Name, "field-keywords") > 0 Then
            textInput.Value = "ジャック・ライアン"
            Exit For
        End If
    Next

    Dim form As HTMLFormElement
    For Each form In ie.document.getElementsByTagName("input")
        If InStr(form.Value, "検索") > 0 Then
            form.Click
            Exit For
        End If
    Next

    Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE
        DoEvents
        Loop
    Sleep 3000

    Dim title As IHTMLElement
    For Each title In ie.document.getElementsByTagName("A")
        If InStr(title.innerText, "ジャック・ライアン") > 0 And title.innerText Like "*字幕*" Then
            title.Click
        Exit For
        End If
    Next
End Sub

1行目:Sleep関数の宣言

2行目:プロシージャの開始

3~4行目:変数宣言

5行目:なし

6行目:ieにInternetExplorer.Applicationを設定

7行目:IEを表示

8行目:Amazonを開く

9行目:なし

10~12行目:読み込みが終わるまで待機

13行目:Sleep関数で3秒待機

14行目:なし

15行目:For Each文でソースコード内の”input”タグの数繰り返す

16行目:検出されたコードでNameが"field-keywords"かどうか

17行目:検索のワードに"ジャック・ライアン"を入れる

18行目:For文を抜ける

19行目:If文を抜ける

20行目:NextでFor文を繰り返す

21行目:なし

22行目:formを変数宣言

23行目:For Each文でソースコード内の”input”タグの数繰り返す

24行目:検出されたコードでValueが"検索"かどうか

25行目:検索ボタンをクリック

26行目:For文を抜ける

27行目:If文を抜ける

28行目:NextでFor文を繰り返す

29行目:なし

30~33行目:ページを開くまで待機

34行目:なし

35行目:変数宣言

36行目:For Each文でソースコード内の”A”タグの数繰り返す

37行目:If文で"ジャック・ライアン"と"字幕"が記載されたリンクかどうか

38行目:リンクをクリック

39行目:For文を抜ける

40行目:If文を抜ける

41行目:NextでFor文を繰り返す

42行目:プロシージャの終了

 

いやぁ長いw

そして自分がジャック・ライアンにはまっているからという理由でこんなプログラムを作成したという

 

本当に面白いんですよこの作品は

時間があればぜひ見ていただきたいです。

AmazonPrimeなら無料で観れます!

f:id:takataka2743:20180915220200p:plain

作成してみて

  本を読んである程度IEを使用したプログラムを組んでは見たものの、未だにこの変数宣言でいいの?と思うところは多々ありますね。

特に検索ボタンを押すところなんて

form.submitで最初はやろうとしたんですが、エラーが出てきて何で?となりました。

とりあえず動かさなくてはということでClickを使用しましたが、

この当たりが中級者なんだろうなぁと痛感しました。

 

  リンクをクリックするところは字幕のページをクリックするように設定しています。これは、そのままで開くと吹替え版が表示されるため、andを使用して字幕の方を開けるのではないかと思いやってみました。問題なく開けて安心しました。

 

内容が長すぎるため今回はこの辺で