Вчера вечером я хотел поиграть с 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 твитов) справочные сайты следующие:
Хорошо, не правда ли?