我正在尝试对Facebook聊天数据进行一些文本挖掘。我下载了一个包含聊天记录的完整HTML文件,但在我进行任何真正的文本挖掘之前,我想将我的数据过滤掉给少数几个人。该文件的一般格式为:<div class="thread">Person's name, my name blahblahblah many nested divs inside here </div>
。其中有几个是背靠背,它们构成了整个聊天记录。此外,我想搜索的任何给定人员可能在文档中有多个线程,整个文档没有缩进/没有换行。
我用regex101.com写了一个正则表达式给了我想要的匹配。它如下:
/(<div class=\"thread\">)(.{0,30}?(Jim|James|Bob).*?)(.*?)(<div class=\"thread\">)/g
您可以对此示例数据进行测试:
<div class="thread">Abby iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div>xyz</div>abc<div class="thread">James iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div></div><div class="thread">Carl iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div></div><div class="thread">Dennis iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div></div><div class="thread">Kelly iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div></div><div class="thread">James iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div></div><div class="thread">John iqwertyuiopasdfghjklzxcvbnm <div> Hello world </div></div><div class="thread"> and so on....
现在,我希望R全局搜索此RegEx,并且对于每个匹配,将组合区域\\ 3 \\ 4打印到单独的.htm文件。这意味着它将包含该人的姓名,然后包含thread
的其余内容。我的命名约定是\\ 3_ [匹配号码] .htm。
如何将每个单独匹配的这些内容打印到其他文件?这样做会大大减少我在分析主要部分期间需要筛选的数据量。我尝试使用包rvest
做类似的事情,但我的文件目前太大了,所以我想把它分解为我需要的十几个线程。
感谢。