• about me
  • statistics
    • example data
  • twitter-mining (german)
  • raspberry pi (german)
  • links
  • Datenschutz
ahoi data

analysis, visualisation and playing around with data

twitter-API

Twitter-mining mit R – Teil 1 – Wie bekommt man die Daten?

2014-12-17 by Niels

In meinem ersten Blogeintrag geht es darum, wie in RStudio eine Verbindung zu Twitter als Datenquelle eingerichtet werden kann, um Daten für eigene Auswertungen zu erhalten.

Was ist Twitter?

Twitter ist ein soziales Netzwerk, das häufig als „Microblogging“ bezeichnet wird. Micro, weil Tweets auf 140 Zeichen beschränkt sind. Also 20 Zeichen weniger als eine SMS. Im Unterschied zur SMS gibt es auch nicht nur einen Empfänger, sondern so viele Empfänger wie einer Person folgen. Twitter ist überdies ein asymetrisches soziales Netzwerk. Wenn ich einem Account folge, heisst dies nicht, dass dieser Account auch automatisch mir folgt. Wenn man eine bestimmte Person adressieren möchte, macht man das mit dem Namen des Accounts, der mit einem „@“-Zeichen beginnt. Das sollte als grobe Information reichen.
Wie ein Twitter-Account in der Praxis aussieht, kann hier rechts in der Seitenleiste gesehen werden.

Twitter als Datenbasis

Um auf die Daten von Twitter zuzugreifen gibt es zwei Zugänge bzw. APIs.
API ist die Kurzform für „Application Programming Interface“ und ermöglicht es Entwicklern, auf die Daten zuzugreifen und sie für eigene Projekte zu nutzen. Ich beschränke mich hier auf kostenlose Zugänge, die jedoch limitiert sind. Wer vollen Zugriff möchte und Kosten nicht scheut, kann seinen Zugang z.B. mittels Twitter Firehose realisieren.

Für den Moment sind diese beiden APIs interessant:

  • Search API (auch: Rest API)
  • Retrospektive Suche in schon geschriebenen Tweets mit best. Kriterien

  • Streaming API
  • Prospektive Festlegung von Kriterien, nach denen Tweets fortlaufend „aufgezeichnet“ werden

Der Unterschied liegt also darin, dass die Search API vom Zeitpunkt der Abfrage ungefähr eine Woche rückwärts nach den entsprechenden Tweets sucht, die Search API Abfrage hingegen erst in dem Moment beginnt, in dem sie gestellt wird. Der Stream ist limitiert  auf ca. 1% aller Tweets. Wieviele Tweets die Search-API liefert, hängt von der Art der Abfrage ab. Die Search API bietet speziellere Abfragemöglichkeiten an, ist aber insgesamt stärker begrenzt als die Streaming API.

Vorraussetzungen für Twitter-Mining mit R

  • aktuelle Version von RStudio
  • Diverse R-libraries
    • twitteR für Search API
    • streamR für Streaming API
  • Twitter-Account
  • Twitter-App im Entwicklerbereich von Twitter-erstellen

Twitter-App für Datenzugang erstellen

Das R-Paket „twitteR“ ermöglicht die Verbindung zur Twitter Search-API mittels Oauth. Oauth ist ein Protokoll, dass einer Anwendung ermöglicht sich mit dem Twitter-Account anzumelden, ohne ein Passwort eingeben zu müssen. Das funktioniert über einen ACCESS-TOKEN. Diese Access-Tokens haben eine beschränkte Lebensdauer. Man kann sie aber jederzeit neu generieren.

  1. Twitter öffnen und mit eigenemAccount einloggen
  2. http://dev.twitter.com/ öffnen
  3. ganz unten unter „tools“ auf „manage your Apps“ klicken
Hier klicken, um eine eigene App zu erstellen.

Bei „manage your app“ klicken, um eine eigene App zu erstellen.Bei „Create a New App“ eine neue App anlegen.

  1. Auf der erscheinenden Seite „create new app“ anklicken

2-create-app

    • Name der App eingeben (Darf nicht schonmal vergeben worden sein)
    • Beliebige Website URL eingeben
    • callback URL freilassen
  1. Auf die Seite der Anwendung gehen und unter den „Application Settings“ auf „manage keys and access tokens“ gehen, eventuell „Create Access TOKEN“ anklicken und die Oauth-Keys kopieren (Darauf achten, keine Leerzeichen mitzukopieren)

 

Klick auf "manage keys and access tokens" für die Zugangsschlüssel

Klick auf „manage keys and access tokens“ für die Zugangsschlüssel

 

Diese Informationen müssen rüber zu R kopiert werden:

  • Consumer Key (API-Key)
  • Consumer Secret (API-Secret
  • Access-Token
  • Access Token Secret

 

Sie finden sich hier:

Api-Token der App kopieren und in RStudio einfügen

Api-Token der App kopieren und in RStudio einfügen

 

Variante 1: R-Code um R mit der Search/Rest API von Twitter zu verbinden

#—————————————————–
# — Mit Twitter verbinden —
#—————————————————–

# Das twitteR package muss wie folgt installiert werden
install.packages(c("devtools", "rjson", "bit64", "httr"))
library(devtools)
install_github("twitteR", username="geoffjentry")

#twitteR package laden
library(twitteR)

# Authentifizierungsschlüssel eingeben
api_key <- "**************************"
api_secret <- "***************************"
access_token <- "*****************************"
access_token_secret <- "******************************"

setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret)

#--- Suchabfrage: 450 tweets mit dem Hashtag #rstats ---
tweets<-searchTwitter("#rstats",n=450))
tweets

Variante 2: R mit Streaming API von Twitter verbinden
Die Verbindung per Streaming-API erfordert eine leicht abgeänderte Vorgehensweise.

#-----------------------
#  API Verbindung einrichten
#-----------------------
install.packages('streamR')
install.packages("ROAuth")
install.packages("RCurl")
library(RCurl)
library(ROAuth)
library(streamR)

#API Key und API Secret kopieren
api_key<-"************"
api_secret<-"**************"

# SSL certs festlegen
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) #dieser Schritt ist bei manchen Windows-PCs nötig

#Verbindungsdaten
my_oauth <- OAuthFactory$new(consumerKey=api_key,
consumerSecret=api_secret,
requestURL='https://api.twitter.com/oauth/request_token',
accessURL='https://api.twitter.com/oauth/access_token',
authURL='https://api.twitter.com/oauth/authorize')

my_oauth$handshake(cainfo = system.file("CurlSSL",+ "cacert.pem", package = "RCurl"))

An diesem Punkt öffnet sich das Browserfenster. Der App muss nun die Verbindung erlaubt werden, anschließend wird eine PIN angezeigt. Diese PIN muss in die Console von R eingeben werden.

Nun besteht die Verbindung von R und Twitter und wir können die Streaming API nutzen:

library(streamR)
# 30 Sekunden Stream aller Tweets mit Hashtag #ff
tweets<-filterStream(file.name="C:/Speicherort/tweets.json",+ track=c("ff"), timeout=30, oauth=my_oauth)
tweets

Falls das Ergebnis keine Tweets bringt, am besten ein Hashtag auswählen, zu dem aktuell viel getwittert wird, oder einen längeren Streaming-Zeitraum nutzen.

Hier geht es mit der Teil 2 – Visualisierung von Worthäufigkeiten in Wordclouds weiter.

Posted in: Uncategorized Tagged: Mining, Rest API, rstats, Streaming API, streamR, Twitter, twitter-API

Neueste Beiträge

  • Multiple Imputation in R. How to impute data with MICE for lavaan.
  • Whereabouts of observations between multiple latent class models. Supplementary plot for LCA with poLCA.
  • Example for a latent class analysis with the poLCA-package in R
  • How to plot correlations of rating items with R
  • Plot with background in ggplot2: Visualising line-ups from Hurricane-festival 1997 – 2015

Neueste Kommentare

    Schlagwörter

    AMOS DiagrammeR graphviz latent class analysis lavaan lavaan.survey LISREL Mining MPLUS Onyx OpenMX path diagrams pip poLCA Python R Raspberry Pi Rest API rstats SEM semPlot sentiment analysis SPSS STATA Streaming API streamR structural equation modeling survey weights textmining TikZ Twitter twitter-API twitter-mining visualisation Visualisierung wordcloud

    Meta

    • Anmelden
    • Feed der Einträge
    • Kommentare-Feed
    • WordPress.org

    Copyright © 2023 ahoi data.

    Omega WordPress Theme by ThemeHall