以前看见过有个人统计论坛的发帖数据,但是他的数据提取不是用R实现的,当时觉得很好奇怎么实现的,自rvest推出后,提取网页数据变得简单了很多。下面给出本论坛发帖数据过程。
统计之都中文论坛的网址是http://cos.name/cn/
通过查看源码可以发现,论坛总共有1675网页存放帖子,每页的网址规律是http://cos.name/cn/page/i/
这个i取值从1到1675,
标题在节点bbp-topic-permalink,
作者在节点bbp-author-name内,
参与者在节点bbp-topic-voice-count内,
响应帖子在节点bbp-topic-reply-count内,
帖子链接在节点bbp-topic-permalink内,
有了这些信息就很容易把这些数据提取处理,代码如下:
library(stringr)
library(rvest)
infofun = function(i) {
url = str_c("http://cos.name/cn/page/", i,"/")
topic = url %>% html() %>%
html_nodes(".bbp-topic-permalink") %>%
html_text() %>% as.vector
author = url %>% html() %>%
html_nodes(".bbp-topic-started-by .bbp-author-name") %>%
html_text() %>% as.vector
Links = url %>% html() %>%
html_nodes(".bbp-topic-permalink") %>%
html_attr("href") %>% as.vector
voice = url %>% html() %>%
html_nodes(".bbp-topic-voice-count") %>%
html_text() %>% .[-1] %>% as.vector
reply = url %>% html() %>%
html_nodes(".bbp-topic-reply-count") %>%
html_text() %>% .[-1] %>% as.vector
data.frame(主题 = topic,作者= author,参与者 = voice,帖子 = reply,链接 = Links)
}
info.list = lapply(1:1675,infofun)
> info.list[[1]][1:2]
主题 作者
1 论坛升级公告 Ihavenothing
2 COS论坛说明(新手必读) 谢益辉
3 R中怎么做BSMOTE采样 sailordump
4 如何查看sample()函数的源代码 xqmanman
5 跪求交通数据 xiaoduo
6 跑两个嵌套的for循环,运行时间不可忍受,怎么办? freesui1984
7 R界面的对话框返回数据到R中 dengmeng0203
8 J-Chart的理论推导的工作完成了 HarryYu
9 R 输出表格格式 SoData26
10 统计学的世界(第五版) 谢益辉
11 tm包构建文档词条矩阵时多个词连在一起作为一个词条出现 mili-yini
12 有关于主成分分析的问题 zhanly7
13 新书推荐 pwpwpw2009
14 中文分词 ricklovelisa
15 有关GWAS中PCA的问题 夏花summer
16 能否推算出这个数字的计算公式?(附4组样本数据) cnchip
17 如何进行Mann-Kendal进行趋势分析呢 JimmyGao