Wie ich mit R und Tweets rummachte: Ein Protokoll

Ich versuche „Mapping a Revolution“  nachzumachen, indem ich Benedikt Köhlers Code auf github folge. 1) Ich muss libraries in R installieren. Mit der Anleitung vom r-blog klappt das ganz schnell. Noch kurz ein paar Mal „y“ für Yes geklickt und meine R-Installation kann Karten darstellen.

2) Im folgenden Codestück müssen die Tweets importiert werden. Köhler macht das über deine Datenbank via CartoDB. Damit kenn ich mich nicht aus. Ich versuche:

# Collect Tweets from CouchDB and create dataframe with lat/long
geo <- data.frame()
tweets <- fromJSON("~/Desktop/tweets.txt")

Das klappt, aber dann funktioniert die folgende for Schleife, bei der die Geodaten ausgelesen werden, nicht. Mist. 3) Neuer Versuch: Ich mache das Tutorial Text Mining with R nach, das klappt erstmal, aber die Daten sind in XML und nicht in JSON. Das hat zur Folge, dass Geodaten nicht gespeichert werden (können?).

###
### Read tweets from Twitter using ATOM (XML) format
###
# installation is required only required once and is rememberd across sessions
# install.packages('XML')
# loading the package is required once each session
require(XML)
# initialize a storage variable for Twitter tweets
mydata.vectors <- character(0)
# paginate to get more tweets
for (page in c(1:15))
{
 # search parameter
 twitter_q <- URLencode('gezi')
 # construct a URL
 twitter_url = paste('http://search.twitter.com/search.atom?q=',twitter_q,'&rpp=100&page=', page, sep='')
 # fetch remote URL and parse
 mydata.xml <- xmlParseDoc(twitter_url, asText=F)
 # extract the titles
 mydata.vector <- xpathSApply(mydata.xml, '//s:entry/s:title', xmlValue, namespaces =c('s'='http://www.w3.org/2005/Atom'))
 # aggregate new tweets with previous tweets
 mydata.vectors <- c(mydata.vector, mydata.vectors)
}

3. „Mh, irgendwie muss es ja gehen.“ Also nochmal zurück zum Ausgabscode: Ich suche einfach nach der URL des JSON-Abrufs und nicht mehr den Umweg über die .txt-Datei.

geo <- data.frame()
tweets <- fromJSON(getURL("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=gezi"))

Komm dann irgendwann auch nicht mehr weiter. Neuer Versuch… 4. Das R-Package streamR installiere ich nun, indem ich der Anleitung des Autors folge. Wenn man sich per oauth installieren will, muss man als vorletzten Schritt die Twitter-Webseite aufrufen, die App authorisieren, dann gibt es einen Zahlencode, den man wiederum in R eingeben muss. Problem: Ich kann die individuelle URL nicht aufrufen, weil sich die Zeile Code in R nicht kopieren lässt. Nach einigen Versuchen entschließe ich mich – so sehr es nervt – die URL mit einer zufälligen Kombination von Zahlen und Buchstaben händisch zu übertragen. Drei, viermal klappt es nicht, weil ich mich vertan habe beim Übertragen, aber dann klappt es doch. Geht doch!   (…) Ungefähr eine Stunde vergeht   5. Juhu, ich konnte mich endlich mit oauth registrieren, sodass es auch wiederholt klappt. Damit bin auf Zeile 10 von 52 von Benedikt Köhlers Code angekommen.   To be continued …    

Ein Gedanke zu „Wie ich mit R und Tweets rummachte: Ein Protokoll“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.