我正在构建一个应用程序来根据 linux 桌面环境中的关键词进行一些文本挖掘。我的目标是使用 wget 从 Wordpress 站点列表中下载网页,将页面保存到磁盘,然后将每篇文章分开以进行进一步处理。这个想法是我可以根据某些单词的频率对单个文章进行排名。Wordpress 博客中的文章倾向于遵循约定:
<article></article>
中间有实际的记录。到目前为止,我已经想出了类似这样的 perl 代码:
$site = "somepage.somedomain"; #can be fed from a database later
$outfile = "out1.txt"; #can be incremented as we go along
$wgcommand = "wget --output-document $outfile $site";
system($wgcommand);
open SITEIN, '<', $outfile;
@sitebodyarr = <SITEIN>;
close SITEIN;
$pagescaler = join('', @sitebodyarr); #let us parse the page.
#this is where I have trouble. the though is to look for a mated pair of tags.
#word press documents are stored between <article> and </article>
$article =~ m/<article>*<\/article>/$pagescaler/g;
#I put the /g flag there, but it doesn't seem to get me
#what I want from the string - *ALL* of the articles one-by-one.
关于使此匹配从 html 文档返回的所有文章标记对集的任何想法?
如果无法使用正则表达式,我的下一个想法是对整个数组进行顺序处理,捕捉模式
$line =~m/<article>/
然后启动一个字符串变量来保存文章内容。继续连接这个变量,直到我捕捉到模式
$line =~m/<\/article>/
然后将字符串存储到我的数据库或磁盘中,然后重复直到@sitebodyarr 结束。但如果可能的话,我真的很喜欢单行正则表达式。如果是的话,有人可以告诉我它会是什么样子吗?