火车头采集常用的纯正则过滤
约 480 字大约 2 分钟
2025-07-31
数据处理
第一步:清除与正文无关的内容,如文中的广告,注释等
\<header>[\s\S]*?\</header>|\<!--.*?-->| |&.*?;
替换为空
如果发布到一些免费平台,有的HTML特殊字符并不会被转化,只需在末尾加入'|&.*?;'过滤掉最后特殊HTML字符即可。
第二步:只保留图片以及常用的块级元素
(?i)\<(?!/?h|/?p|/?div|/?br|/?img|/?strong).*?> 替换为 空
只保留标题标签 h 分段标签 p、div、br 以及图像标签 img ;前面的(?i)表示不区分大小写,想保留哪个标签,则只增加哪个标签
第三步:去掉标签的选择器或样式,并把标签修改为p
\<(/?h[1,5]).*?> 替换为 \<$1>
\<(/?strong).*?> 替换为 \<$1>
\<(/?p|/?div).*?> 替换为 \<p>
第四步:把乱七八糟的图像样式,改成标准图像代码
\<img.*?src="(.+?)".*?> 替换为 \<img src="$1">
第五步:规范段落标签<p>开始</p>结束
\</?(p|br).*?>替换为\</p>\<p>
慧聪网段落只有<p>开始没有</p>结束
某些站个别文章,</p>结束后没有<p>开始就直接是下个段落的内容
第六步:把<p>或</p>前后的空格替换为空
\s*(\<\/?p>)\s* 替换为 $1
第七步:把连续2个以上的<p>或</p>替换为1个
(\<p>){2,}|(\</p>){2,} 替换为 $1$2
第八步:把所有的空段落替换为空
\<p>\</p> 替换为 空
第九步:由于第五步的关系,文章开头可能是</p>结尾可能是<p>需要清理他们
^\</p>|\<p>$ 替换为 空
[a-zA-Z]
(\d{2,100})
更新: 2024-04-03 15:46:40
原文: <https://www.yuque.com/seoers/usmmz7/znzftl7w1flvx9r8>