JayyMehta Ответов: 0

Извлечение текста из класса span из таблицы


Привет, у меня есть этот сайт, где я хочу, чтобы детали продукта были извлечены в моем листе excel. Я написала свое... Но я получаю ошибку в строке:

If objdiv4.className = "Section" Then


Итак, вот полный код:

Что я уже пробовал:

Sub onmyown()

Dim ie As InternetExplorer
Dim doc As HTMLDocument
Dim sBrand As String, sBrand1 As Integer, sBrand2 As Integer, sBrand3 As Integer, iStart As Integer, iStop As Integer
Dim tr As HTMLTableRow
Dim td As HTMLTableCell


Set ie = New InternetExplorer
 
ie.Visible = False
ie.navigate "https://www.ebay.in/itm/Bushnell-Binocular-With-Ultra-High-Power-8-x-21mm-100m-1000m-with-Carrying-Case-/292199511233?_trksid=p2059707.m48543.l9013"


Do While ie.readyState <> READYSTATE_COMPLETE
Application.StatusBar = "How you Doin ..."
DoEvents
Loop




Set doc = ie.Document


With ThisWorkbook.Worksheets("Sheet1")
    Range("A1:N1").Merge
    Range("A1:N1").HorizontalAlignment = xlCenter
    Range("A1:N1").Cells.Interior.Color = RGB(135, 135, 135)
    Range("A1:N1").Cells.Font.Bold = True
    Range("A1:N1").Cells.Font.Size = 14
    Range("A2:C2") = Array("Price", "Brand", "Specifications")
    Range("A2:C2").Cells.Font.Size = 12
    Range("A2:C2").Cells.Font.Bold = True
End With
    
For Each objDiv In doc.getElementsByTagName("div")
    If objDiv.ID = "CenterPanelInternal" Then
        For Each objh1 In objDiv.getElementsByTagName("h1")
            If objh1.className = "it-ttl" Then
                ThisWorkbook.Worksheets("Sheet1").Range("A1:N1").Value = objh1.outerText
            End If
        Next
        
        For Each objdiv2 In objDiv.getElementsByTagName("div")
            If objdiv2.className = "u-flL w29 vi-price" Then
                ThisWorkbook.Worksheets("Sheet1").Cells(3, 1).Value = objdiv2.outerText
            End If
        Next
    End If

If objDiv.ID = "viTabs" Then
        For Each objdiv3 In objDiv.getElementsByTagName("div")
                If objdiv3.className = "itemAttr" Then
                    For Each objdiv4 In objDiv.getElementsByTagName("div")
                        If objdiv4.className = "section" Then
                            For Each td In objdiv4.getElementsByTagName("tr")
                                If td.className = "attrLabels" Then
                                    If td.outerText = "Brand:" Then
                                        For Each tdvalue In td.getElementsByTagName("span")
                                            ThisWorkbook.Worksheets("Sheet1").Cells(3, 2).Value = tdvalue.outerText
                                        Next
                                    End If
                                End If
                            Next
                        End If
                    Next
                End If
        Next
    End If
Next


End Sub

[no name]

Пожалуйста, напишите, какую именно ошибку вы получаете?

JayyMehta

Получение ошибки "требуется объект" в упомянутой выше строке. Я тоже пробовал создавать объект, но потом, когда он запускается, никаких изменений не происходит, никакого вывода.

Richard MacCutchan

- Я уже видел твои ответы. "
Спросите человека, который дал вам ответ.

JayyMehta

Неправильно напечатан...

Richard Deeming

For Each objdiv4 In objDiv.getElementsByTagName("div")

Разве так не должно быть:
objdiv3.getElementsByTagName("div")

В противном случае вы просто повторяете Родительский цикл.

0 Ответов