Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Daten aus HTML extrahieren, class auslesen
08.05.2020 15:36:28 PascalKrautino
NotSolved
08.05.2020 16:36:05 Gast21366
NotSolved

Ansicht des Beitrags:
Von:
PascalKrautino
Datum:
08.05.2020 15:36:28
Views:
763
Rating: Antwort:
  Ja
Thema:
VBA Daten aus HTML extrahieren, class auslesen
Hi Zusammen, 
 
ich benötige ein Sript, welches mir aus Instagram folgende Daten rausholt und diese in ein Excelblatt schiebt. 
Dazu habe ich mir folgendes Skript zurecht geschustert. 
Es werden: Name, Postanzahl, Follower, Followings und die Bio 
in Excelgeschoben. basierend auf dem ersten Begriff in A2 (Instausername) 
Dieser wird auch für die Webadresse verwendet. 
Das Skript funktioniert einwandfrei!
Nur brauch ich noch Likes und Kommentaranzahl der letzten 10 Posts (Variable fürs einstellen der Postanzahl item(0)/(1) etc. 
 
Ich bekomme es einfach nicht hin und zum selber schreiben fehlt mir scheinbar das Know How. 
Alles Klassen die ich ansprechen möchte werden nicht ausgelesen. 
Eine zweite Anfrage über den ie klappt, liefert aber keine Ergebnisse. Wobei zwei Anfragen auch nicht die gewünschte Lösung wäre aber halt besser als nichts. 
Da hier nichts ausgegeben wird, gehe ich davon aus, dass ich die Klassen falsch anspreche. Kann mir irgendjemand helfen?
 
```
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
 
```
 
Die Seite ist natürlich
https://www.instagram.com/kvandahlen/
 
Der zugehörige HTMl Code mit den Stellen für Likes und Kommentare sieht wie folgt aus:
 
 
 
    <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  "" Anzahl der Likes
    <span class="_1P1TY coreSpriteHeartSmall"></span>
    </li>
    <li class="-V_eO">
    <span>59</span>  "" Anzahl der Kommentare
    <span class="_1P1TY coreSpriteSpeechBubbleSmall"></span>
    </li>
    </ul>
 
 
Dieser Auszug wiederholt sich für jeden Post, so dass man hier sicher mit einer Auflistung dieser Klasse bis zu einem bestimmten Wert arbeiten könnte. 
Für Hilfe bin ich sehr dankbar. 
 
LG Pascal 
 
 
 
 
 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Daten aus HTML extrahieren, class auslesen
08.05.2020 15:36:28 PascalKrautino
NotSolved
08.05.2020 16:36:05 Gast21366
NotSolved