万能过滤如何精准过滤采集内容?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 织梦建站 正文

什么是“万能过滤”?

“万能过滤”是织梦DedeCMS内容模型中的一个功能,主要用于在内容发布或采集入库时,对文章的、摘要等字段进行一系列的自动化处理。

织梦采集 万能过滤
(图片来源网络,侵删)

它的核心作用是:自动化地“清洗”和“规范”内容,去除不需要的元素,统一格式,提升用户体验,并利于SEO。

主要应用场景:

  1. 采集后处理:这是最常用的场景,从其他网站采集来的内容通常带有大量无关信息,如版权声明、广告、无关链接、原文来源等,万能过滤可以一键清除这些。
  2. 用户投稿/前台发布:规范用户提交的内容,去除恶意代码、无关标签,保持网站风格统一。
  3. 批量处理旧内容:对网站已有的文章进行批量格式化处理,统一风格。

万能过滤在哪里设置?

万能过滤的设置位置与你使用的内容模型密切相关。

  1. 采集时设置

    织梦采集 万能过滤
    (图片来源网络,侵删)
    • 进入“采集” -> “一键采集”或“自定义采集”。
    • 在设置采集规则的最后一步,有一个“万能过滤”的选项卡,这里的过滤规则仅对本次采集有效。
  2. 内容模型中设置(推荐)

    • 这是更常用、更强大的方式,设置一次,适用于所有通过该模型发布的内容(包括采集、后台发布、前台投稿等)。
    • 进入“核心” -> “内容模型管理”。
    • 点击你想要修改的模型(通常是“文章”模型),进入“字段管理”。
    • 找到你需要过滤的字段,如 title (标题)、body (文章内容)、description (。
    • 在该字段的“万能过滤”文本框中,填写你的过滤规则。

万能过滤的核心功能与规则详解

万能过滤主要包含三大类功能:替换移除正则表达式,你可以组合使用它们。

基础替换

这是最简单的功能,用新内容替换旧内容。

  • 格式|新内容
  • 示例
    • 织梦cms|DedeCMS:将文章中所有的“织梦cms”替换为“DedeCMS”。
    • 来源:织梦家园|:将“来源:织梦家园”整个字符串替换为空(即删除)。

移除标签/内容

用于删除特定的HTML标签或标签内的所有内容。

  • 格式<标签名>
  • 示例
    • <script>:删除所有 <script> 及其内部的JavaScript代码。
    • <iframe>:删除所有 <iframe> 嵌入的框架。
    • <div class="ad">...</div>特别注意,这个格式是错误的,它只会删除 <div class="ad"> 这个开始标签,而不会删除整个块,要删除整个块,必须使用正则表达式(见下文)。

移除特定属性

用于删除HTML标签中的某个特定属性,比如超链接的 target="_blank" 或图片的 style 属性。

  • 格式<标签名|属性名>
  • 示例
    • <a|target>:删除所有 <a> 标签中的 target 属性。
    • <img|style>:删除所有 <img> 标签中的 style 属性,防止图片被CSS撑大或变形。
    • <p|class>:删除所有 <p> 标签中的 class 属性。

强大的正则表达式过滤

这是万能过滤的精髓,可以实现极其复杂的匹配和替换。强烈建议使用Notepad++等支持正则的工具进行测试,再填入织梦。

  • 格式{正则表达式}
  • 示例
目的 正则表达式 说明
删除整个特定div块 {<div id="post_content">.*?</div>} 匹配并删除从 <div id="post_content"></div> 之间的所有内容。 是非贪婪匹配,确保只匹配到最近的闭合标签。
删除所有超链接,但保留文字 {<a.*?>(.*?)</a>} 匹配 <a></a> 之间的所有内容,并将其替换为捕获组 的内容(即链接文字)。
删除特定class的span {<span class="author">.*?</span>} 删除class为"author"的整个span标签及其内容。
删除文章末尾的版权声明 {(来源:.*?|转载请注明:.*?|本文链接:.*?)} 匹配并删除以“来源:”、“转载请注明:”或“本文链接:”开头的任意字符,直到换行。 表示“或”。
移除图片的宽度和高度属性 {<img\s+([^>]*?)\s*width="[^"]*"\s+([^>]*?)\s+height="[^"]*"\s*(.*?)>} 匹配并删除 <img> 标签中的 widthheight 属性,这个正则比较复杂,但很实用。
删除HTML注释 {<!--.*?-->} 匹配并删除所有 <!-- --> 格式的HTML注释。
清理多余的空格和换行 {&nbsp;} 删除所有不间断空格。{\s+} 可以删除多余的空白字符,但需谨慎使用,可能破坏格式。

实战案例:采集小说后如何设置万能过滤?

假设我们从某个网站采集小说,采集到的内容格式如下:

<h1>第一章 开篇</h1>
<p>这是小说的第一段内容。</p>
<p>这是第二段内容。</p>
<div class="ad">
    <script>...广告代码...</script>
    <a href="ad-link">点击购买</a>
</div>
<p>小说继续,这是第三段内容。</p>
<p class="copyright">本文转载自:XX小说网,作者:张三,原文链接:http://...</p>
<p>小说结尾。</p>

目标:得到干净、只有正文内容的小说章节。

万能过滤规则设置(按顺序填写):

  1. 移除广告块

    • 规则{<div class="ad">.*?</div>}
    • 说明:使用正则表达式精确删除整个广告容器。
  2. 移除所有JavaScript

    • 规则<script>
    • 说明:清除所有脚本标签。
  3. 移除版权信息

    • 规则{<p class="copyright">.*?</p>}
    • 说明:使用正则删除包含版权信息的特定段落。
  4. 移除多余的空格和换行(可选)

    • 规则&nbsp;
    • 说明:清理不间断空格。
  5. 清理图片样式(如果内容中有图片)

    • 规则<img|style>
    • 说明:防止图片样式被篡改。

将变为:

<h1>第一章 开篇</h1>
<p>这是小说的第一段内容。</p>
<p>这是第二段内容。</p>
<p>小说继续,这是第三段内容。</p>
<p>小说结尾。</p>

最佳实践与注意事项

  1. 顺序很重要:过滤规则是按照从上到下的顺序执行的,如果你想先移除 <script> 标签,再处理里面的内容,顺序就不能反。
  2. 测试,再测试:在正式应用到大量数据前,务必在后台发布一篇文章或进行一次小范围采集,检查过滤效果是否符合预期,正则表达式一旦写错,可能导致内容错乱或丢失。
  3. 模型”:将过滤规则设置在内容模型中,而不是每次采集时都设置,这样可以一劳永逸。
  4. 备份!备份!备份!:在修改规则,特别是使用复杂的正则表达式前,务必备份你的数据库,以防规则错误导致大量数据损坏。
  5. 不要过度过滤:不要为了追求“完美”而设置过于激进的规则,这可能会误删正文中的重要部分,保持克制,只清除确定不需要的内容。
  6. 学习正则表达式:虽然基础替换够用,但真正发挥“万能过滤”威力的是正则表达式,花点时间学习基本的正则语法( [] )能让你事半功倍。

织梦的“万能过滤”是一个功能强大但需要谨慎使用的工具,它就像是内容的“自动化清洁工”,通过合理组合替换、移除标签、移除属性和正则表达式,你可以高效地处理来自各种渠道的原始内容,让你的网站内容始终保持整洁、规范和专业。

-- 展开阅读全文 --
头像
dede手机列表模板如何调用与设置?
« 上一篇 04-30
织梦文章发布时间段如何设置最合适?
下一篇 » 04-30

相关文章

取消
微信二维码
支付宝二维码

目录[+]