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
|