解析R中reddit_content函数构建Reddit用户社交网络的原理
关于RedditExtractoR包reddit_content函数的工作逻辑与批量处理方法
单条评论URL的作者与回复对象识别逻辑
reddit_content函数核心是解析Reddit评论页面的HTML结构:
- 评论发布者:函数定位对应评论节点的
.author类元素,提取文本内容作为author字段。 - 被回复对象:Reddit评论是嵌套结构,子评论的HTML节点携带
data-parent-id属性指向父评论ID。函数通过这个ID找到父评论节点,再提取父评论的.author内容作为parent_author字段;顶级评论(无回复对象)的parent_author会返回空值。
直接调用reddit_content("单条评论URL"),查看返回数据框里的author和parent_author字段,就能直观看到两者的对应关系。
批量提取评论信息并构建社交网络
- 准备URL列表:把需要处理的评论URL整理成字符向量:
comment_urls <- c( "https://reddit.com/r/xxx/comments/xxx/xxx/xxx1/", "https://reddit.com/r/xxx/comments/xxx/xxx/xxx2/", # 补充更多URL ) - 批量抓取数据:用
purrr包的map_df批量调用reddit_content,合并结果为统一数据框:library(purrr) all_comment_data <- map_df(comment_urls, reddit_content) - 提取社交网络边数据:筛选出存在
parent_author的记录,构建「评论作者→被回复对象」的边列表:edges <- all_comment_data[!is.na(all_comment_data$parent_author), c("author", "parent_author")] - 构建并可视化社交网络:用
igraph包生成有向图并可视化:library(igraph) user_graph <- graph_from_data_frame(edges, directed = TRUE) plot(user_graph, vertex.size = 10, edge.arrow.size = 0.5)
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

