织梦采集规则怎么编写
织梦自带的采集模块通过“采集节点”来定义从目标站点抓取哪些内容、如何匹配字段。一份高质量的采集规则决定了入库内容的完整度与清洁度。本文以一套完整的节点配置流程,带你写出稳定可复用的采集规则。
一、采集节点的基本构成
一个采集节点由四部分组成,缺一不可:
- 基本信息:节点名称、目标站点编码(GBK/UTF-8)。
- 列表页规则:列表页 URL、分页规则、文章链接匹配。
- 文章页规则:标题、正文、作者、来源、发布时间的字段匹配。
- 过滤规则:广告、多余标签、敏感词的处理。
二、列表页规则编写
1. 配置列表URL
在“采集 → 采集节点管理 → 新增节点”中填写列表页地址。支持分页通配符 {page}:
列表URL:https://example.com/news/list_{page}.html
起始页:1
结束页:10
2. 文章链接匹配
使用织梦的区域匹配语法 {dede:match} 与正则 {dede:listreg} 提取文章链接。先框定列表区域,再正则匹配链接:
{dede:match}...<div class="news-list">[内容]</div>...{/dede:match}
{dede:listreg}<a href="[内容]" target="_blank">{/dede:listreg}
用浏览器查看源码,复制列表区域前后唯一的 HTML 片段作为匹配锚点,避免匹配到无关链接。
三、文章页字段规则
1. 标题字段
{dede:match}<h1 class="title">[内容]</h1>{/dede:match}
2. 正文字段
正文通常在固定容器内,用区域匹配框出:
{dede:match}<div class="article-content">[内容]</div class="end">{/dede:match}
3. 时间与作者
{dede:match}<span class="author">[内容]</span>{/dede:match}
{dede:match}<time>[内容]</time>{/dede:match}
若时间格式不标准,可在“发布时间格式”中填写对应的时间解析格式,如 Y-m-d H:i:s。
四、过滤规则编写
1. 去广告与多余标签
在“文章内容过滤规则”中使用正则替换。常见过滤目标:
{dede:trim_replace}<script[^>]*>.*?</script>{/dede:trim_replace}
{dede:trim_replace}<div class="ad">.*?</div>{/dede:trim_replace}
{dede:trim_replace}<iframe[^>]*>.*?</iframe>{/dede:trim_replace}
2. 替换关键词
将目标站的特定文字替换为自己的,例如版权声明:
{dede:replace}原站名|我的站点{/dede:replace}
五、采集测试与调试
- 保存节点后点击“采集内容 → 测试采集”。
- 系统会显示列表页抓取到的链接数与首篇文章字段预览。
- 若某字段为空,回到节点编辑调整匹配锚点,确保前后锚点在源码中唯一。
- 测试通过后再执行批量采集。
采集前确认目标站点允许被采集,遵守其 robots 协议与版权声明,避免侵权风险。
六、高级技巧
- 多列表页:一个节点可配置多组列表 URL,按栏目分类入库。
- 图片本地化:开启“下载图片到本地”避免图片失效。
- 自动发布:设置采集后自动审核发布,配合定时任务实现无人值守。
复杂页面可用“可视匹配”辅助:织梦部分版本提供点击页面元素自动生成匹配规则的功能,降低正则门槛。
采集规则的长期维护
目标站点改版是采集规则失效的最大原因。建议为每个节点维护一份“最近一次成功采集时间”记录,定期巡检,发现成功率骤降立即更新匹配锚点。同时把字段匹配做成可配置模板,遇到同类站点可快速套用,让采集规则从一次性脚本沉淀为可复用的内容资产,支撑站点持续稳定的内容供给。