Rweibo里的statuses.user_timeline一次只能抓一页,最多100条,结果全是列表,所以想先写个函数并转换数据格式然后用ldply避免循环。
<br />
weibo.content <- function(page.count,screen.name='******') {<br />
content <- statuses.user_timeline(roauth, screen_name=screen.name, count=100, page=page.count)<br />
# 抓取第page.count页的微博数据<br />
time <- sapply(content,function(x) x$created_at)<br />
text <- sapply(content,function(x) x$text)<br />
# 时间和内容<br />
source <- sapply(strsplit(source_all,'>|<'),function(x) x[3])<br />
# 发送平台<br />
data.frame(time,text,source) # 转换成数据框<br />
}<br />
然后在调用时,比如:
weibo_content(1,'******')
总是提示“错误于eval(expr, envir, enclos) : 找不到对象'screen.name'”,当然page.count也同样找不着
似乎后边的调用时的变量赋值不能传递进statuses.user_timeline,事先定义好变量值用循环倒没问题:
<br />
x <- 1:3<br />
for (i in 1:3) {<br />
content <- statuses.user_timeline(roauth, screen_name=screen.name, count=100, page=x[i])<br />
...<br />
}<br />
而如果事先不定义一个变量在循环里直接写‘conten<- (....,page=i)’似乎也是找不到对象
求解释~
另外各位前辈有更好的方法一次抓取全部微博内容并转换数据格式的也希望不吝赐教哈~
</p>