dede采集规则怎么写

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

下面我将为你提供一份从零开始的、超详细的DedeCMS采集规则编写教程,包含核心概念、步骤、实例和常见问题。

dede采集规则怎么写
(图片来源网络,侵删)

核心概念:理解采集的“四大件”

在开始编写规则之前,你必须先理解DedeCMS采集的四个核心部分,这就像汽车的四个轮子,缺一不可。

  1. 目标网址

    • 是什么:你想要采集的那个网页的地址。
    • 类型
      • 单页网址:只采集这一个页面,比如一篇特定的文章。
      • 列表网址:包含多个文章链接的页面,这是最常用的模式,一个新闻列表页,上面有20条新闻的标题和链接。
    • 作用:告诉DedeCMS去哪里抓取内容。
  2. 采集规则

    • 是什么:定义如何从目标网页中“提取”出你想要的内容。
    • 核心元素
      • :用正则表达式或XPath定位文章标题的HTML代码。
      • :定位文章正文部分的HTML代码。
      • 文章作者:定位作者名字的代码。
      • 文章来源来源(如“新华网”)的代码。
      • 发布时间:定位发布日期的代码。
      • 缩略图:定位文章配图的代码。
      • 分页符:如果文章有多页,需要定义如何识别下一页。
    • 作用:告诉DedeCMS在目标网页的“代码汤”里,捞出哪些“肉”(内容)。
  3. 发布规则

    dede采集规则怎么写
    (图片来源网络,侵删)
    • 是什么:定义采集到的内容如何存入你自己的网站数据库。
    • 核心元素
      • 栏目选择:把文章存放到哪个网站栏目。
      • 作者处理:如果采集不到作者,是否用固定的作者名(如“佚名”)或网站名代替。
      • 来源处理:同上,可以设置固定的来源。
      • 关键词处理中自动提取关键词,或者手动指定。
      • 内容处理:是否要去除广告、版权信息等,或者保留原文的HTML格式。
      • 是否立即审核:采集到的文章是直接发布,还是需要你手动审核。
    • 作用:告诉DedeCMS把捞上来的“肉”放进哪个“盘子”(栏目),以及怎么“摆盘”(处理数据)。
  4. 过滤规则

    • 是什么:一个高级功能,用于在采集前或采集后批量清理内容。
    • 作用:自动删除文章中所有的<script>标签(防止恶意代码)、统一替换某个词语、删除特定的HTML元素等。

编写采集规则的详细步骤(以列表页为例)

我们以采集一个新闻列表页为例,一步步编写规则。

准备工作:分析目标网站

这是最关键的一步!在DedeCMS后台操作之前,先用浏览器打开你要采集的网站列表页(http://www.example.com/news/list.html)。

  1. 按F12,打开浏览器的“开发者工具”。
  2. 切换到 “元素” (Elements)“检查” (Inspect) 模式。
  3. 将鼠标悬停在文章标题上,右键 -> “检查” (Inspect),这时代码会高亮显示。
  4. 仔细观察这个标题的HTML代码,找到它的规律,它是不是被包含在 <div class="news-title"> 里?还是 <h2> 标签里?它的链接地址是什么?

第一步:创建采集节点

  1. 登录你的DedeCMS后台。
  2. 左侧菜单栏找到 “采集” -> “采集管理”
  3. 点击 “增加新采集节点”
  4. 填写基本信息:
    • 节点名称:给这个采集任务起个名字,XX新闻网采集”。
    • 起始URL:填写你刚才分析的列表页网址
    • 链接:这是列表页中指向具体文章页面的链接,你需要用开发者工具分析出这个链接的共同规律。
      • 所有文章链接都是 <a href="http://www.example.com/news/123.html">
      • 它们的共同规律可能是 http://www.example.com/news/ 开头,.html
      • 在DedeCMS里,你可以用通配符 来表示不确定的部分。
      • 填写为:http://www.example.com/news/*.html
    • 列表间隔:采集完一个列表页后,等待几秒再采集下一个,防止对方服务器拒绝,建议设置 1-3 秒。
    • 目标页编码:查看目标网页源代码,通常是 UTF-8GB2312,必须设置正确,否则会乱码。
    • 列表分页:如果列表页有“下一页”功能,可以在这里设置,实现自动翻页采集。

第二步:设置采集规则(核心)

点击上一步页面底部的 “高级选项”“下一步”,进入采集规则设置界面,这里需要填写、内容、作者、时间等的提取规则。

dede采集规则怎么写
(图片来源网络,侵删)

  • 选择类型:通常选择 "使用正则表达式",因为它更灵活。
  • 填写规则:回到浏览器,用开发者工具定位到文章标题的HTML代码。
    • 假设代码是:<h2><a href="http://www.example.com/news/123.html">这是一个伟大的标题</a></h2>
    • 你需要提取的是 这是一个伟大的标题
    • 正则表达式写法:<h2><a [^>]*>([^<]*)</a></h2>
      • <h2><a [^>]*>:匹配 <h2><a href="..." 这部分,[^>]* 表示匹配 > 之前的任意字符。
      • ([^<]*):这是关键,用括号 括起来的部分就是要提取的内容。[^<]* 表示匹配 < 之前的任意字符,也就是标题文字。
      • </a></h2>:匹配结尾标签。
  • 测试:在旁边的“测试”框里输入那段HTML代码,点击“测试”,如果下方能正确显示“这是一个伟大的标题”,说明规则写对了。

  • 方法同上,用开发者工具定位到文章正文区域的开始和结束标签。
    • 假设正文在 <div class="article-content"></div> 之间。
    • 正则表达式写法:<div class="article-content">([\s\S]*?)</div>
      • [\s\S]*? 是一个强大的正则,可以匹配包括换行符在内的所有字符。 表示非贪婪匹配,即匹配到第一个 </div> 就停止,避免匹配到页面其他地方的 </div>
  • 分页处理:如果文章有多页,你需要在这里添加分页规则。
    • 分页”部分,填写分页链接的共同规律,http://www.example.com/news/123_*.html
    • 正则表达式里,用 {page} 代替页码,<div class="article-content">([\s\S]*?)</div>,DedeCMS会自动替换 {page} 并抓取所有分页的内容合并。

文章作者、来源、时间

  • 方法同上,找到对应的HTML标签,用正则表达式把内容提取出来。
  • 提示:很多网站会把作者、时间等信息放在 <meta> 标签里,这样更容易提取。<meta name="author" content="张三">,规则可以写成 <meta name="author" content="([^"]*)">

缩略图

  • 如果文章里有图片,并且你希望把它作为缩略图。
  • 方法:定位到文章内容里的第一张 <img>
  • 正则表达式<img [^>]*src="([^"]*)"[^>]*>
    • src="([^"]*)" 这部分就是提取图片地址的关键。

第三步:设置发布规则

采集规则设置完毕后,进入发布规则设置,这是决定内容最终形态的一步。

  • 选择栏目:务必选择一个已存在的、支持发布文章的栏目
  • 默认作者/来源:如果采集规则没取到,就用这里设置的值。
  • 内容过滤:非常重要!可以写一些正则表达式来清理内容。
    • 删除所有 <script> 标签:<script.*?</script>
    • 删除所有超链接:<a.*?</a>
    • 删除特定广告DIV:<div id="ad">.*?</div>
  • 处理选项
    • 内容来自外部链接:如果勾选,文章内容会保留原始链接,并自动生成摘要,不勾选则完全复制内容到你的数据库。
    • 远程图片本地化:强烈建议勾选!这会自动下载文章里的图片到你的服务器,并替换为本地链接,避免图片失效和版权问题。
    • 是否审核:根据你的需要选择,新站建议先审核,确认内容没问题后再批量审核发布。

第四步:保存并测试

  1. 填写完所有规则后,点击 “保存”
  2. 回到“采集管理”页面,找到你刚刚创建的节点。
  3. 点击 “选择”,勾选这个节点,然后点击顶部的 “开始采集”
  4. 系统会先尝试采集几篇文章进行测试,请务必仔细检查采集结果、内容、图片是否都正确抓取了。
  5. 如果测试没问题,就可以放心点击 “开始采集” 进行批量采集了。

常用正则表达式速查表

功能 正则表达式 说明
提取任意标签内的内容 <tag[^>]*>([\s\S]*?)</tag> tag 是标签名,如 div, p[\s\S]*? 匹配任意字符(包括换行)。
提取标签的某个属性 <tag [^>]*attr="([^"]*)"[^>]*> attr 是属性名,如 src, href[^"]* 匹配引号内的内容。
删除特定标签 <script.*?</script> 删除所有 script 标签及其内容。
删除所有超链接 <a.*?</a> 删除所有 <a>
删除特定 class 的 div <div class="ad">.*?</div> 删除 class 为 "ad" 的 div。
匹配 HTML 实体 &[a-z]+; 匹配如 &nbsp;, &lt; 等字符实体。

常见问题与技巧

  • Q1: 采集后乱码怎么办?

    • A: 检查“目标页编码”是否设置正确,如果还不行,可以在“过滤规则”里添加一个编码转换的规则,euc-cnutf-8
  • Q2: 采集不到内容,或者内容为空?

    • A: 90% 的情况是正则表达式写错了
      1. 回到浏览器,用开发者工具再次确认目标代码。
      2. 在DedeCMS的“测试”框里反复测试你的正则表达式,看是否能正确匹配。
      3. 注意正则表达式里的空格、斜杠等符号是否与源码完全一致。
  • Q3: 采集的内容格式很乱,有很多无关的HTML标签?

    • A: 在“发布规则”的“内容过滤”里,添加更多的过滤规则来删除你不需要的标签,如广告、导航等。
  • Q4: 对方网站改版了,采集规则失效了怎么办?

    • A: 这是网站的常态,你需要回到第一步,重新分析对方网站的HTML结构,然后修改你的采集规则中的正则表达式。
  • Q5: 采集很慢?

    • A: “列表间隔”设置得太短,适当增加间隔时间(如3-5秒),既是礼貌,也能提高成功率,检查你的服务器网络是否通畅。

最后提醒时,请务必遵守目标网站的robots.txt协议和版权规定,仅用于个人学习或非商业用途,尊重原创,过度采集可能会对目标网站造成压力,也可能导致你的IP被封。

-- 展开阅读全文 --
头像
织梦展示置顶文章列表如何实现?
« 上一篇 今天
dede如何显示真实ip?
下一篇 » 今天

相关文章

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