dede采集如何自动添加标签?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

核心概念:DedeCMS的标签系统

在开始之前,你需要理解DedeCMS的标签是如何工作的:

  1. 文章模型:每篇文章都属于一个模型(如“文章”、“软件”等),模型里定义了文章可以包含的字段,如标题、内容、作者、来源、 tags 等。
  2. 标签字段tags 是文章模型中的一个特殊文本字段,用于存储文章的标签,多个标签用英文逗号 分隔。
  3. 采集规则:采集规则定义了如何从目标网站抓取信息,并映射到DedeCMS的字段上,你需要做的就是将目标网站的标签信息,正确地映射到DedeCMS的 tags 字段。

最简单、最推荐的方法(使用内置的“TAG自动获取”功能)

这是DedeCMS采集器自带的功能,非常适合大多数情况,尤其是目标网站的标签格式规范时。

适用场景:目标网页的标签列表非常清晰,通常位于 <meta name="keywords"> 标签内,或者在一个特定的、有规律的HTML结构中(如 <div class="tags">...</div>)。

操作步骤

  1. 进入采集管理:登录DedeCMS后台,依次点击 采集 -> 采集管理

  2. 编辑或新建采集规则

    • 如果是编辑现有规则,在规则列表中找到你的规则,点击后面的 选择 -> 修改
    • 如果是新建规则,点击 增加新采集,填写基本信息并进入下一步。
  3. 设置“文章内容”采集

    • 在左侧的“文章内容”列表中,找到 Tags 字段。
    • 点击 获取 按钮,DedeCMS会自动分析当前网页,尝试找到标签列表。
    • 关键步骤:如果自动获取不成功,你需要手动编写 采集公式 来提取标签,这是最核心的一步。
  4. 编写采集公式(手动指定标签位置)

    • 情况A:标签在 <meta name="keywords"> 这是最常见的情况,采集公式非常简单:

      <meta name="keywords" content="([^"]*)">

      这个正则表达式会提取 content 属性中引号内的所有内容,这通常就是网站的keywords,可以直接作为文章的tags

    • 情况B:标签在一个特定的HTML容器内 假设目标网站的标签HTML结构如下:

      <div class="post-tags">
          <a href="/tag/php">php</a>
          <a href="/tag/dedecms">dedecms</a>
          <a href="/tag/web">web</a>
      </div>

      你需要编写一个公式来提取 <a> 标签内的文本,公式如下:

      <div class="post-tags">(.+?)</div>

      在下方的 列表链接/内容链接/内容处理 选项卡中,勾选 使用[组内循环],这会让采集器对提取到的整个 <div> 内容进行循环处理。

      在下面的 循环处理 部分,设置:

      • 循环体采集公式<a[^>]+>([^<]+)</a>
      • 保存方式:选择 合并到一个字段
      • 合并方式:选择 用逗号分隔

      这样,采集器会找到所有 <a> 标签里的文字(php, dedecms, web),然后用逗号合并成 php,dedecms,web,存入 tags 字段。

    • 情况C:标签是逗号分隔的纯文本 如果标签就在某个 <p><span> 里,直接用逗号隔开,

      <span class="keywords">织梦,dedecms,采集,教程</span>

      那么公式就很简单:

      <span class="keywords">([^<]+)</span>

      直接提取括号里的内容即可。

  5. 保存并测试

    • 设置好 Tags 字段的采集公式后,保存规则。
    • 测试采集 页面,选择几条包含不同标签形式的链接进行测试。
    • 查看右侧的“文章内容预览”,确认 Tags 字段是否正确抓取到了你想要的标签,并且格式是 标签1,标签2,标签3 的形式。

更灵活的自定义方法(通过“内容处理”)

如果目标网站的标签结构非常混乱,或者你想对抓取到的标签进行二次处理(如去除无关词汇、统一格式等),可以使用“内容处理”功能。

适用场景:需要对标签进行额外处理,或者目标网站标签没有固定规律。

操作步骤

  1. 采集规则设置:按照方法一的步骤,先在 Tags 字段设置一个基础的采集公式,哪怕只是一个大致的范围。

  2. 处理”

    • 在采集规则编辑界面的顶部,点击 内容处理 选项卡。
    • 你可以对 Tags 字段的内容进行修改。
  3. 编写处理代码

    • 在左侧的字段列表中选择 Tags
    • 在右侧的 替换/处理 文本框中,你可以使用正则表达式进行替换。

    示例

    • 场景:你采集到的标签是 php教程,dedecms模板,网站建设, 建设网站,你想去掉“教程”、“模板”、“建设”这些词,并确保没有空格。
      • 替换代码
        [replacetags]
        处理说明:去除特定词并统一格式
        正则表达式:教程|模板|建设
        替换为:(留空)
      • 处理后的结果php,dedecms,网站,网站
      • 额外处理:为了去除空格,可以再加一行:
        [replacetags]
        处理说明:去除空格
        正则表达式:\s+
        替换为:,
      • 最终结果php,dedecms,网站,网站 (注意:这个例子可能会产生连续逗号,你需要再处理一下 -> )
  4. 保存并测试:同样,保存规则后进行测试,查看 Tags 字段的处理结果是否符合预期。


高级方法(通过修改采集程序文件)

警告:此方法需要你具备一定的PHP编程能力和对DedeCMS文件结构的了解,修改核心文件有导致网站崩溃的风险,请务必先备份文件

适用场景:需要实现极其复杂的标签逻辑,或者DedeCMS自带的采集器无法满足你的需求。

操作步骤(概念性)

  1. 定位文件:DedeCMS的采集核心逻辑通常位于 /include/dedecollection.class.php 文件中,你可以搜索 function GetArcHtml 或与 tag 相关的函数。

  2. 修改逻辑:在 dedecollection.class.php 中,找到处理 tags 字段的相关代码段,你可以在它原有逻辑的基础上,加入你自己的PHP代码。

    • 例如:你可以在 tags 字段被赋值后,增加一个函数调用,对标签进行更复杂的处理。

      // 假设 $this->ArcTags 已经是采集到的原始标签字符串
      $this->ArcTags = $this->CustomProcessTags($this->ArcTags);
    • 然后在类的某个地方(比如文件末尾)添加你的自定义函数:

      /**
       * 自定义标签处理函数
       * @param string $tagsStr 原始标签字符串
       * @return string 处理后的标签字符串
       */
      function CustomProcessTags($tagsStr)
      {
          // 1. 去除 "教程" 关键词
          $tagsStr = str_replace('教程', '', $tagsStr);
          // 2. 用逗号分割成数组
          $tagsArray = explode(',', $tagsStr);
          // 3. 去除空值并重新索引
          $tagsArray = array_filter($tagsArray);
          // 4. 去重
          $tagsArray = array_unique($tagsArray);
          // 5. 重新合并成字符串
          return implode(',', $tagsArray);
      }
  3. 测试:修改文件后,清空缓存,重新测试采集功能。


总结与最佳实践

方法 优点 缺点 推荐度
内置功能 简单、安全、官方支持,能满足80%的需求 灵活性相对较低 ⭐⭐⭐⭐⭐ (首选)
内容处理 非常灵活,可以对标签进行二次加工 需要熟悉正则表达式 ⭐⭐⭐⭐ (复杂场景首选)
修改文件 功能无限强大,可实现任何逻辑 风险高,需要编程能力,升级麻烦 ⭐ (仅限高级开发者)

给你的建议

  1. 从方法一开始:先尝试使用DedeCMS自带的“TAG自动获取”功能,并手动编写采集公式,这是最直接、最安全的方式。
  2. 善用正则表达式:学习基本的正则表达式(如 捕获、[^] 取反、 或 匹配多次)是解决采集问题的核心技能。
  3. 测试、测试、再测试:每次修改规则后,一定要进行充分测试,确保采集的准确性和稳定性。
  4. 保持标签简洁:采集到的标签最好控制在5个以内,并且每个标签不宜过长,这样更有利于SEO和用户体验。

希望这份详细的指南能帮助你成功在DedeCMS采集时添加标签!

-- 展开阅读全文 --
头像
C语言如何正确输入float类型数据?
« 上一篇 04-05
织梦页面为何要重新生成?
下一篇 » 04-05
取消
微信二维码
支付宝二维码

目录[+]