Сбор данных, невозможно извлечь другие классы - PullRequest
0 голосов
/ 08 мая 2020

Мне нужно извлечь некоторые данные из Instagram. Код работает, но я не могу продолжить код для своих нужд. И да, я полностью новичок и просто скопировал код со всего inte rnet .. Пожалуйста, помогите мне добавить эти функции. Это должно быть легко для тех, кто понимает полный синтаксис этого кода. Он извлекает имя из файла Excel и заполняет остальные с именем, количеством сообщений, подписчиками, подписками и биографией. Работает отлично.

Option Explicit
Public Sub GetInfo()
    Dim IE As New InternetExplorer, lastRow As Long, arr(), groupResults()

    Const BASE_URL As String = "https://www.instagram.com/"

    With ThisWorkbook.Worksheets("Tabelle1")
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        Select Case lastRow
        Case 1
            Exit Sub
        Case 2
            ReDim arr(1, 1): arr(1, 1) = .Range("A2").Value
        Case Else
            arr = .Range("A2:A" & lastRow).Value
        End Select

        ReDim groupResults(0 To lastRow - 2)
        Dim results(0 To 4), counter As Long, i As Long
        With IE
            .Visible = True

            For i = LBound(arr, 1) To UBound(arr, 1)
                If Len(BASE_URL & arr(i, 1)) > Len(BASE_URL) Then
                    .navigate BASE_URL & arr(i, 1)

                    While .Busy Or .readyState < 4: DoEvents: Wend
                    'Name, Followers,  Following,Posts,Biography
                    Dim aNodeList As Object, ele As Object, t As Date
                    Const MAX_WAIT_SEC As Long = 5

                    t = Timer

                    Do
                        DoEvents
                        On Error Resume Next
                        Set ele = .document.querySelector(".rhpdm")
                        On Error GoTo 0
                        If Timer - t > MAX_WAIT_SEC Then Exit Do
                    Loop While ele Is Nothing

                    '   Application.Wait Now + TimeSerial(0, 0, 2)
                    results(0) = ele.innerText
                    Set aNodeList = .document.querySelectorAll(".g47SY")
                    results(1) = aNodeList.Item(0).innerText
                    results(2) = aNodeList.Item(1).innerText
                    results(3) = aNodeList.Item(2).innerText
                    results(4) = .document.querySelector(".rhpdm ~ span").innerText
                    Set aNodeList = Nothing: Set ele = Nothing
                    groupResults(counter) = results
                    counter = counter + 1
                End If
            Next
            .Quit '<== Remember to quit application
        End With

        For i = LBound(groupResults) To UBound(groupResults)
            .Cells(2 + i, "B").Resize(1, UBound(results) + 1) = groupResults(i)
        Next

    End With
End Sub

Сайт должен быть удален, например: https://www.instagram.com/kvandahlen/

Теперь мне нужны данные о количестве лайков и количестве комментариев для каждого одно сообщение.

В коде HTML эти точки можно найти по адресу:

<div class="qn-0x" style="background-color: rgba(0, 0, 0.3);">
<ul class="Ln-UN">
<li class="-V_eO">
<span> 1.393</span>  ==$0  "" Amount of likes
<span class="_1P1TY coreSpriteHeartSmall"></span>
</li>
<li class="-V_eO">
<span>59</span>  "" Amount of Comments
<span class="_1P1TY coreSpriteSpeechBubbleSmall"></span>
</li>
</ul>

Этот код одинаков для всех сообщений, за исключением суммы. Мне нужно извлечение последних 10 (или с изменяемым значением) сообщений. Я пробовал, пробовал и пробовал, но без шансов ... Я не понимаю, что такое мое превосходство ..

...