在rvest + stringr中使用多个引文清理论坛帖子

时间:2017-09-17 03:29:06

标签: r rvest stringr

我正在抓一个很长的论坛帖子,我想提出一个包含以下信息的列的数据库:日期/完整帖子文本/引用用户/引用文本/干净文本

干净的文字应该是每个用户的帖子,如果他们回复任何人,则不带引号。如果帖子不是回复,我会留下NA。以下是发明用户的发明帖子,用以说明我到目前为止所做的工作:

post<-"Meow1 wrote: »\noday is gonna be the day that they're gonna throw it back to you?\nBy now you should've somehow Realized what you gotta do\n\n\nI don't believe that anybody Feels the way I do, about you now\nMeow1 wrote: »\nI'm sure you've heard it all before But you never really had a doubt\n\n\nBecause maybe, you're gonna be the one that saves me\nMeow1 wrote: »\nAnd after all, you're my wonderwall\n\n\nAnd all the lights that lead us there are blinding"

然后我尝试拉出引用的用户(Meow1)并且它可以工作:

QuotedUser_1<-ifelse(grepl('wrote:', post), gsub('\\s*wrote.*$', '', post), NA) 
QuotedUser_1
[1] "Meow1"

然后我创建了这些代码来提取引用的文本和干净的文本:

Quotedtext_1<- ifelse(grepl('wrote:', post), gsub('^.*wrote\\s*|\\s*\\n\\n\\n.*$', '', post), NA)

当只有一个引用文本时它起作用,但除此之外,它只给出最后引用的位(在示例中,'毕竟,你是我的奇迹') 同样对于干净的文本,它只返回最后的回复:

Clean_text<- sub('^.*\\n\\n\\n\\s*|\\s*wrote.*', '', post)

如果有人建议改进代码,以便我可以使用所有引用的向量,以及包含所有回复的向量,我将非常感激......

干杯

1 个答案:

答案 0 :(得分:0)

您确定无法单独删除作者和文字信息吗?如果没有源代码,很难知道,但我猜它们可以通过不同的css选择器获得,从而更容易分割数据。 如果没有,那么查看str_locate_all可能会有所帮助,它允许您找到所有出现的情况。 “写道:”并相应地拆分字符串。