Вчера вечером я хотел поиграть с Twitter, чтобы увидеть, какие сайты я использовал в качестве ссылок в своих твитах. Я хотел создать список лучших четырех.
Первая проблема, с которой я столкнулся, заключалась в том, что установить twitteR в Ubuntu не так просто! Вы должны правильно установить
RCurl … но прежде чем устанавливать пакет в R, необходимо запустить следующую строку в терминале:
$ sudo apt-get install libcurl4-gnutls-dev
затем запустите R:
$ R
и тогда вы можете запустить стандарт:
> install.packages("RCurl")
и, наконец, установить пакет интересов,
> install.packages("twitteR")
Затем вторая проблема, с которой я столкнулся, заключалась в том, что
twitteR был недавно обновлен благодаря новому API Twitter. Теперь вам нужно зарегистрироваться на
веб-странице разработчиков Twitter , получить идентификатор и пароль, а затем использовать их в следующей функции (я изменил их оба ниже, поэтому, если вы попытаетесь запустить следующий код, вы, вероятно, получите сообщение об ошибке ):
> library(twitteR)
> cred <- getTwitterOAuth("ikzCtYif9Rwoood45w","rsCCifp99kw5sJfKfOUhhwyVmPl9A")
> registerTwitterOAuth(cred)
[1] TRUE
> T <- userTimeline('freakonometrics',n=5000)
Вы также должны перейти на эту веб-страницу и ввести PIN-код, который вам дают.
To enable the connection, please direct your web browser to: http://api.twitter.com/oauth/authorize?oauth_token=cQaDmxGe... When complete, record the PIN given to you and provide it here:
Это боль в **, поверь мне. Во всяком случае, я смог запустить его. Затем я могу получить список со всеми моими (недавними) твитами:
> T <- userTimeline('freakonometrics',n=5000)
Теперь моей (третьей) проблемой было извлечение URL-адресов ссылок из моих твитов. Второй твит из списка был:
- [textmining] «Как компьютерная программа помогла раскрыть Джоан Роулинг как автора призыва Кукушки» Scientificamerican.com/article.cfm?id… by @garethideas
Но когда вы смотрите на текст, вы видите:
> T[[2]] [1] "freakonometrics: [textmining] \"How a Computer Program Helped Reveal J. K. Rowling as Author of A Cuckoos Calling\" http://t.co/wdmBGL8cmj by @garethideas"
Таким образом, я получаю не URL-адрес, используемый в моем твите, а ярлык для URL-адресов с
http://t.co/ . К счастью, @
3wen (как всегда) смог помочь мне со следующими функциями:
> extraire <- function(entree,motif){
+ res <- regexec(motif,entree)
+ if(length(res[[1]])==2){
+ debut <- (res[[1]])[2]
+ fin <- debut+(attr(res[[1]],"match.length"))[2]-1
+ return(substr(entree,debut,fin))
+ }else return(NA)}
> unshorten <- function(url){
+ uri <- getURL(url, header=TRUE, nobody=TRUE, followlocation=FALSE,
+ cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))
+ res <- try(extraire(uri,"\r\nlocation: (.*?)\r\nserver"))
+ return(res)}
Теперь, если мы используем эти функции, мы можем получить истинный URL:
> url <- "http://t.co/wdmBGL8cmj" > unshorten(url) [1] http://www.scientificamerican.com/article.cfm?id=how-a-computer-program-helped-show..
Теперь я могу поиграть со своим списком, чтобы извлечь URL-адреса и адрес веб-сайта:
> exturl <- function(i){
+ text_tw <- T_text[i]
+ locunshort2 <- NULL
+ indtext <- which(substr(unlist(strsplit(text_tw, " ")),1,4)=="http")
+ if(length(indtext)>0){
+ loc <- unlist(strsplit(text_tw, " "))[indtext]
+ locunshort=unshorten(loc)
+ if(is.na(locunshort)==FALSE){
+ locunshort2 <- unlist(strsplit(locunshort, "/"))[3]}}
+ return(locunshort2)}
Используя apply с этой функцией и моим списком, и подсчитывая с помощью простой функции table (), я вижу, что мои лучшие четыре (из более чем 900 твитов) справочные сайты следующие:
Хорошо, не правда ли?