2

我正在尝试使用 Topsy Otter api 抓取推文,因此我可以对其进行一些数据挖掘以用于我的论文。

到目前为止,我得到了:

library(RJSONIO)
library(RCurl)
tweet_data <- getURL("http://otter.topsy.com/search.json?q=PSN&mintime=1301634000&perpage=10&maxtime=1304226000&apikey=xxx")
fromJSON(tweet_data)

哪个工作正常。然而,现在我想从这个文件中返回一些细节,'content' 和 'trackback_date'。我似乎无法弄清楚如何 - 我尝试将几个示例拼凑在一起,但无法提取我想要的内容。

这是我迄今为止尝试过的:

trackback_date <- lapply(tweet_data$result, function(x){x$trackback_date})

content <- lapply(tweet_data$result, function(x){x$content})

任何帮助将不胜感激,谢谢。

编辑 我也试过:

library("rjson")
# use rjson

tweet_data <- fromJSON(paste(readLines("http://otter.topsy.com/search.json?q=PSN&mintime=1301634000&perpage=10&maxtime=1304226000&apikey=xxx"), collapse=""))
# get a data from Topsy Otter API
# convert JSON data into R object using fromJSON()

trackback_date <- lapply(tweet_data$result, function(x){x$trackback_date})

content <- lapply(tweet_data$result, function(x){x$content})
4

1 回答 1

5

Topsy Otter API 响应的基本处理:

library(RJSONIO)
library(RCurl)
tweet_data <- getURL("http://otter.topsy.com/search.json?q=PSN&mintime=1301634000&perpage=10&maxtime=1304226000&apikey=xxx")

#
# Addition to your code
#
tweets <- fromJSON(tweet_data)$response$list
content <- sapply(tweets, function(x) x$content)
trackback_date <- sapply(tweets, function(x) x$trackback_date)

编辑:处理多个页面

函数从指定的 100 个项目中获取page

pagetweets <- function(page){
  url <- paste("http://otter.topsy.com/search.json?q=PSN&mintime=1301634000&page=",page,
               "&perpage=100&maxtime=1304226000&apikey=xxx",
               collapse="", sep="")
  tweet_data <- getURL(url)
  fromJSON(tweet_data)$response$list
}

现在我们可以将它应用到多个页面:

tweets <- unlist(lapply(1:10, pagetweets), recursive=F)

而且,瞧,这段代码:

content <- sapply(tweets, function(x) x$content)
trackback_date <- sapply(tweets, function(x) x$trackback_date)

返回您 1000 条记录。

于 2013-01-15T20:49:07.507 回答