実現したいこと
・VBAのSelenium(Webdriver)を使用し、下記のhtmlから商品情報を抽出~Excelに貼付をしたいです。
発生している問題・エラーメッセージ
・データの抽出は出来ているのですが、欲しい情報の全てではない様子です。
(※試した事に参考のコードを記載致します。)
→・おそらくsize_1~やinventory_1 ~の情報はBLの情報しかないです。
(※htmlのClassコードを見る限り、NVやNVSTも同じものではあるように思えます。)
▼現状のDebug.Print
color_1 = BL
color_2 = NV
color_3 = NVST
size_1 = 5
~~~略~~~
size_10 = 23
~~~略~~~
size_27 =
inventory_1 = 在庫あり
~~~略~~~
inventory_10 = 在庫あり
inventory_11 =
~~~略~~~
inventory_27 =
shipping_1 = 1-2日以内発送予定
~~~略~~~
shipping_10 = 1-2日以内発送予定
shipping_11 =
~~~略~~~
shipping_21 =
▼理想のDebug.Print
BK 5 在庫あり いつでも発送可
BK 7 在庫なし 再入荷リスト
~~~略~~~
NVST 5 残りわずか 1-2日以内発送予定
NVST 7 在庫なし 再入荷リスト
~~~略~~~
⇒▼最終的にはExcel A列にcolor_list の一覧、D列に size_stockの一覧…があれば良いと考えています。
該当のソースコード(試したこと)①
VBA
sub zzz Dim driver As New Selenium.EdgeDriver '■対象のサイトを開く~最大化 driver.Get Sheets("02_在庫状況").Range("C" & k) ', 10000 '■04_情報を収集 '▼04_01_色の情報を取得 Dim color Set color = driver.FindElementsByClass("model-color") Dim l_01 For l_01 = 1 To color.count Debug.Print "color_" & l_01 & " = " & color.Item(l_01).text Next l_01 '▼04_02_サイズの情報を取得 Dim size Set size = driver.FindElementsByClass("item-sku-actions-info-size") Dim l_02 For l_02 = 1 To size.count Debug.Print "size_" & l_02 & " = " & size.Item(l_02).text Next l_02 '▼04_03_在庫情報を取得 Dim inventory Set inventory = driver.FindElementsByClass("item-sku-actions-info-inventory") Dim l_03 For l_03 = 1 To inventory.count Debug.Print "inventory_" & l_03 & " = " & inventory.Item(l_03).text Next l_03 '▼04_04_発送情報を取得 Dim shipping Set shipping = driver.FindElementsByClass("item-sku-actions-info-shipping") Dim l_04 For l_04 = 1 To shipping.count Debug.Print "shipping_" & l_04 & " = " & shipping.Item(l_04).text Next l_04 End Sub
該当のソースコード(試したこと)②
Sub zzz_test() Dim driver As New Selenium.EdgeDriver ' ブラウザを開く driver.Get "https://brandavenue.rakuten.co.jp/item/EW3582/?product_color_cd=13&s-id=brn_search_list" ' 商品情報を格納するための配列 Dim productInfo() As String ReDim productInfo(1 To 27, 1 To 4) ' カラー、サイズ、在庫、発送情報 ' カラー情報を取得 Dim colorElements As Object Set colorElements = driver.FindElementsByClass("model-color") For i = 1 To colorElements.count productInfo(i, 1) = colorElements.Item(i).text Next i ' サイズ情報を取得 Dim sizeElements As Object Set sizeElements = driver.FindElementsByClass("item-sku-actions-info-size") For i = 1 To sizeElements.count productInfo(i, 2) = sizeElements.Item(i).text Next i ' 在庫情報を取得 Dim inventoryElements As Object Set inventoryElements = driver.FindElementsByClass("item-sku-actions-info-inventory") For i = 1 To inventoryElements.count productInfo(i, 3) = inventoryElements.Item(i).text Next i ' 発送情報を取得 Dim shippingElements As Object Set shippingElements = driver.FindElementsByClass("item-sku-actions-info-shipping") For i = 1 To shippingElements.count productInfo(i, 4) = shippingElements.Item(i).text Next i ' Excelに貼り付け Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") For i = 1 To 27 ws.Cells(i, 1).Value = productInfo(i, 1) ws.Cells(i, 2).Value = productInfo(i, 2) ws.Cells(i, 3).Value = productInfo(i, 3) ws.Cells(i, 4).Value = productInfo(i, 4) ' ブラウザを閉じる driver.Quit End sub '▼メモ:出力結果> ' BL 5 在庫あり 1-2日以内発送予定 ' NV 7 在庫あり 1-2日以内発送予定 ' NVST 9 在庫あり 1-2日以内発送予定 ' 11 予約受付中 3月初旬発送予定 ' 13 在庫あり 1-2日以内発送予定 ' 15 在庫あり 1-2日以内発送予定 ' 17 在庫あり 1-2日以内発送予定 ' 19 在庫あり 1-2日以内発送予定 ' 21 残りわずか 1-2日以内発送予定 ' 23 在庫あり 1-2日以内発送予定 ' '▼修正したい欲しい点が2点あります。 ' ' 01_これはBLの情報だけですので、一番右の配列はBLとなっているのが正しいです。 ' 02_NV・NVSTの情報も抽出し、同様の書式でExcelに貼り付けたいです。
0 コメント