Nur die obersten Beiträge in Disqus mit R / Selenium finden

Zunächst entschuldige ich mich für die Länge dieses Beitrags, da ich genug Details zu dem geben wollte, was ich versuche zu tun.

Ich versuche, eine Scraping-Anwendung, die ich in R geschrieben habe, zu perfektionieren, um Disqus-Kommentare zu erhalten. Bisher kann ich alle Kommentare zu einer bestimmten Seite mithilfe der verschiedenen RSelenium-Funktionen abrufen. Ich versuche jetzt, eine Art Baumstruktur aus den geposteten Kommentaren zu erhalten, d. H. Zuerst die obersten Kommentare abzurufen und dann zu überprüfen, ob diese Kommentare untergeordnete Elemente haben. Eine bestimmte Seite der Website, die ich als Beispiel verwende, enthält insgesamt 34 Kommentare, von denen jedoch nur 18 die obersten sind. Der Rest sind alle Kinder oder Kinder von Kindern.

Was ich tue, ist das Öffnen einer Seite und das Erstellen eines Web-Treibers in Chrome. Ich verwende das Auswahl-Gadget, um die richtigen Selektoren zu finden, die ich wie folgt verwenden kann:

1. elem <- remDr$findElement(using = "id", value = "posts")
2. elem.posts <- elem$findChildElements(using = "id", value = "post-list")
3. elem.posts <- elem$findElements(using = 'css selector', value = '.post~ .post+ .post')

Im obigen Code findet Zeile 1 den Abschnitt "Posts". Wenn ich dann Zeile 2 verwende, werden alle Posts auf der Seite angezeigt. In der folgenden Zeile werden alle Nachrichten angezeigt. Wenn sich also 34 Kommentare auf Seite I befinden, wird Folgendes angezeigt Hol sie dir alle.

elem.msgs <- elem.posts[[1]]$findChildElements(using = 'css selector', '.post-message')

Nun habe ich festgestellt, dass die "Baum" -Struktur der Kommentare für mein Datenprojekt wichtig sein kann und versuche, zuerst die obersten Kommentare abzurufen und dann in jedem obersten Kommentar nach verfügbaren untergeordneten Kommentaren zu suchen. Die Beispielwebseite istHie. Um die Kommentare zu erhalten, benutze ich die Zeilen 1 und 3 oben und das Ergebnis ist eine Liste von 16 und wenn ich @ benutelem.posts[[1]]$getElementAttribute("id") Ich erhalte die Beitrags-ID, mit der ich später nach jedem Top-Kommentar suchen kann.

Diese Liste von 16 sollte 18 sein und ich kann nicht verstehen, warum die ersten beiden Kommentare nicht in der Liste erfasst werden. Dies ist auf anderen Seiten der Fall, auf denen einige der häufigsten Kommentare nicht in der Liste enthalten sind.

Meine Frage lautet: Was kann ich versuchen, um alle obersten Kommentare auf einer Seite ohne Kommentarausfälle zu erhalten? Gibt es einen besseren Weg, um die besten Kommentare zu erhalten, ohne meinen unerfahrenen Umweg zu durchlaufen?

ielen Dank für jede Hilfe oder Richtun

Antworten auf die Frage(2)

Ihre Antwort auf die Frage