2016-07-11 21 views
1

Ich versuche, den Text von Disqus Kommentare von einer Online-Lokalzeitung mit RSelenium in Chrome zu kratzen oder zu erhalten, finde aber, dass es ein wenig schwierig für meine Fähigkeiten ist. Ich habe viele Orte durchsucht, aber nicht die richtigen Informationen gefunden oder die falschen Suchbegriffe verwendet (höchstwahrscheinlich).RSelenium Scraping für Disqus Kommentare

Bis jetzt habe ich es geschafft, den "normalen" html von den Seiten zu bekommen, aber kann nicht die richtige Klasse, CSS-Selektor oder ID bestimmen, um die Disqus-Kommentare zu erhalten. Ich habe Selectorgadget auch versucht, aber dieses zeigt nur auf #dsq-app2, das den gesamten Disqus-Bereich auf einmal auswählt und nicht erlaubt, kleinere Teile des Bereichs auszuwählen. Ich habe das selbe mit RSelenium unter Verwendung elems <- mybrowser$findElement(using = "id", "dsq-app2") mit einer "Umgebung" versucht, die in elems gespeichert wird. Dann habe ich versucht, Kind Elemente innerhalb elems zu finden, aber kam leer.

Anzeigen der Seite über Entwickler-Tools ich, dass die interessante Sachen in einem Iframe genannt #dsq-app2 ist und haben es geschafft, extrahieren alle seine Quelle durch die elems$getPageSource() nach dem Rahmen Schalt mit elems$switchToFrame("dsq-app2") sehen können. Dies gibt den ganzen HTML-Code als einen großen "schmutzigen" Chunk aus und sucht nicht nach den erforderlichen Dingen, die in <p> Tags und anderen interessanten Elementen wie den Nutzernamen des Posters in data-role="username" und anderen enthalten sind. Ich finde den richtigen Weg nicht.

Ich habe auch versucht mit dem Rat gegeben here, aber die Disqus-Setup ist ein wenig anders. Eine der Seiten, die ich versuche, ist this mit dem Großteil der Kommentare innerhalb eines Abschnitts namens conversation und eine Tonne anderer IDs wie posts und die unbestellte Liste mit der id=post-list, die letztlich die Kommentare trägt, die ich kratzen muss.

Alle Ideen oder Hilfe-Tipps sind sehr willkommen und dankend erhalten.

+0

Können Sie die URL der Zeitung posten? – Stedy

+0

In meinem letzten Absatz habe ich einen Link in der zweiten Zeile :-). http://www.maltatoday.com.mt/news/national/67431/education_minister_says_that_mixing_with_different_social_groups_is_essential_to_education#.V4S1m7iF6Uk – salvu

Antwort

1

Nach vielen Tests und Experimenten habe ich es geschafft. Ich weiß nicht, ob es die sauberste oder schönste Lösung ist, aber es funktioniert. Hoffe andere werden es nützlich finden. Grundsätzlich habe ich die URL gefunden, die nur auf die Kommentare verweist. Dies ist innerhalb der "dsq-app2" iframe und ist eine attribute namens src. Anfangs habe ich auch auf den iframe gewechselt, habe aber festgestellt, dass dies ohne funktioniert.

remDr$navigate("toTheRequiredPage") 
elemsource <- remDr$findElement(using = "id", value = "dsq-app2") 
src <- elemsource$getElementAttribute("src") # find the src attribute within the iframe` 
remDr$navigate(src[[1]]) # navigate to the src url 

# find the posts from the new page 
elem <- remDr$findElement(using = "id", value = "posts") 
elem.posts <- elem$findChildElements(using = "id", value = "post-list") 
elem.msgs <- elem.posts[[1]]$findChildElements(using = "class name", value = "post-message") 

length(elem.msgs) 
msgtext <- elem.msgs[[1]]$getElementText() # find first post's text 
msgtext # print message 

Update: Ich fand heraus, dass, wenn ich remDr$switchToFrame("dsq-app2") verwende ich nicht die src URL verwenden müssen, wie ich oben dargelegt habe. Es gibt also zwei Arten zu kratzen;

  1. Verwenden switchToFrame("nameOfFrame") oder
  2. Verwenden Sie meine vorherige Lösung der Verwendung der src URL aus dem iframe

Hoffnung dies macht es klarer.