みなさん、こんちには!
いよいよ取得したテキストから、必要な項目を切り分けていきましょう。
Internet Explorerを使う場合は、下記のようなメソッドが使えるのですが、
今回は、テキスト操作に今後も役立つ区切り文字で取得していきたいと思います。
下記は、区切り文字で切り出すためのコードになります。
私自身かなりの頻度で使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Function SplitGet(strExpr As String, ByVal strSep As String) As String Dim p1 As Long, p2 As Long SplitGet = "" If strExpr = "" Or strSep = "" Then Exit Function For p1 = 1 To Len(strExpr) Step Len(strSep) If Mid$(strExpr, p1, Len(strSep)) <> strSep Then Exit For Next p2 = InStr(p1, strExpr, strSep) If p2 = 0 Then SplitGet = Mid(strExpr, p1) strExpr = "" Else SplitGet = Mid(strExpr, p1, p2 - p1) strExpr = Mid(strExpr, p2 + Len(strSep)) End If End Function |
それでは、テスト的に商品名を取り出したいと思います。
こちらのサイト「https://www.rakuten.co.jp/」から、もう少し実用的な商品一覧ページ「https://www.rakuten.co.jp/category/555086/?l-id=top_normal_gmenu_d_ladiesfashion_001」から切り分けていきます。
テキストを見ながら 商品一覧ページをブラウザで見てみると、
<div class=”dui-container searchresults”>
から、商品一覧が始まっていると思われるので、それまでの文字列をこのタグで区切って取り除いてみましょう。
1 2 |
Dim TmpStr As String TmpStr = SplitGet(HTML_str, "<div class=" & Chr(34) & "dui-container searchresults" & Chr(34) & ">") |
文字列の中に「”」を表示するとエラーになるので「” & Chr(34) & “」に置き換えています。
次に商品一覧が終わったと思われる下記までを タグで区切って取り除いてみましょう。
<div class=”dui-container pagination _centered”
1 2 |
Dim Shohin_str As String Shohin_str = SplitGet(HTML_str, "<div class=" & Chr(34) & "dui-container pagination _centered") |
Shohin_str 変数に商品一覧部分のテキストが代入されました。
それでは、商品名を取得してみましょう。
商品名は <a title= ・・・・・ > 商品名 </a> のようにタグで囲まれるので抽出してみましょう。しかし「 ・・・・・ 」の部分は、商品によって変わりますので、分割して取り除きます。
これをコードに表して見ましょう。
1 2 3 4 5 |
Dim TmpStr As String Dim SyohinName As String TmpStr = SplitGet(Shohin_str, "<a title=") TmpStr = SplitGet(Shohin_str, ">") SyohinName = SplitGet(Shohin_str, "</a>") |
SyohinName 変数に商品名が代入されました。
次回は、総まとめで商品一覧の中の商品名全てをシートに抽出したいと思います。
コメント