IEの金額だけを抽出するには 削除
Message#2 2014年9月9日(火)07時35分 From: 管理人 |
前後のHTMLソースがわからないので、いくつか案をださせていただくと以下になります。 【案1】 ※「現在の価格」がpタグないでここでしか使われていない場合 Sub sample() 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示する objIE.Visible = True '指定したURLのページを表示する objIE.Navigate "サイトURL" '完全にページが表示されるまで待機する Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Do Until objIE.document.ReadyState = "complete" DoEvents Loop r=1 For Each objTag In objIE.document.getElementsByTagName("p") With objTag If InStr(.outerHTML, "現在の価格") > 0 Then intEn = InStr(.innerHTML, "円") cells(r,1) = Mid(.innerHTML, 7, Len(.innerHTML) - intEn - 1) r = r + 1 End If End With Next End Sub 【解説】 まず、対象のURLを開きます。 次にgetElementsByTagNameメソッドでpタグのデータをループ処理されます。 pタグ内に「現在の価格」の文言があったら次の処理へ移ります。 intEnはpタグ内の「円」の文言がどの位置にあるのかを抽出しています。 そしてMid関数を利用して価格を抽出する最初の位置と最後の位置を指定して価格だけ抽出させています。 【参考ページ】 getElementsByTagNameでタグの値取得:http://www.vba-ie.net/element/subroutine-value.html 【案1】 ※数字が利用されているpタグがここしかない場合 Sub sample2() 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示する objIE.Visible = True '指定したURLのページを表示する objIE.Navigate "サイトURL" '完全にページが表示されるまで待機する Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Do Until objIE.document.ReadyState = "complete" DoEvents Loop r=1 For Each objTag In objIE.document.getElementsByTagName("p") With objTag For i = 1 To Len(.innerHTML) myN = "" myStr = Mid(.innerHTML, i, 1) If myStr Like "[0-9]" Then myN = myN & myStr End If If IsNumeric(myN) Then cells(r,1) = myN r = r + 1 End If Next i End With Next End Sub 【解説】 まず、対象のURLを開きます。 次にgetElementsByTagNameメソッドでpタグのデータをループ処理されます。 Mid関数で一文字ずつ抽出してmyStr Like "[0-9]"で数字かどうかチェックしています。 文字列をチェックしたら、最後にIsNumeric関数でmyNが数値として認識できるかチェックし価格だけ抽出します。 |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。