dede织梦采集如何获取当前网址规则?

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

下面我将详细解释这个规则的原理、设置方法以及实际应用场景。

dede织梦采集 获取当前网址规则
(图片来源网络,侵删)

核心原理:使用 {dede:field name='arcurl'/}

在DedeCMS的采集规则中,“获取当前网址”功能,其底层是通过调用一个名为 {dede:field name='arcurl'/} 的系统变量来实现的。

  • 工作时机:这个标签只在“列表循环采集”或“内容页循环采集”模式下有效,当你勾选了“循环采集”并设置好循环起始和结束URL后,系统在每次循环到一个新的目标页面时,就会将这个页面的完整URL赋值给 arcurl 这个变量。
  • 作用:它代表了当前正在被处理的、循环体中的那个页面的地址。

你告诉织梦去采集一个包含10篇文章链接的列表页,开启循环后,织梦会访问列表页,找到第一个文章链接,{dede:field name='arcurl'/} 就等于第一个文章的URL,抓取完第一个文章后,它会自动找到第二个文章链接,{dede:field name='arcurl'/} 的值就更新为第二个文章的URL,以此类推。


在采集器中的设置方法

这个功能通常用在两个地方:采集列表页

场景1:在“列表页”规则中获取文章链接

这是最常见的用法,用于从列表页中提取出每篇文章的详细页面地址。

dede织梦采集 获取当前网址规则
(图片来源网络,侵删)

步骤:

  1. 创建或打开一个采集任务,进入“选择列表页”设置。
  2. 填写“列表起始URL”:这是包含你想要采集的所有文章链接的那个页面。
  3. 勾选“循环采集”:这是启用 {dede:field name='arcurl'/} 的前提。
  4. 设置“循环起始”和“循环结束”
    • 循环起始:通常是列表中第一篇文章链接的 <a>
    • 循环结束:通常是列表中最后一篇文章链接的 <a>
    • 这样,织梦就知道要在 <a> 标签这个区域内进行循环匹配。
  5. 在“文章网址”的输入框中填写规则
    • 这里就是使用 {dede:field name='arcurl'/} 的地方。
    • 规则类型:选择“选择器”。
    • :直接填写 a (代表提取循环体内的所有 <a> 标签的 href 属性值)。
    • 高级选项:如果列表页的链接不是标准的 <a href="...">,或者有特殊结构,可能需要更复杂的选择器,div.news-item > a 等。

示例: 假设你的列表页HTML结构如下:

<div class="article-list">
    <div class="item">
        <a href="/show/1.html">文章标题1</a>
    </div>
    <div class="item">
        <a href="/show/2.html">文章标题2</a>
    </div>
    <div class="item">
        <a href="/show/3.html">文章标题3</a>
    </div>
</div>

你的“列表页”规则设置应该是:

  • 循环起始:<div class="article-list">
  • 循环结束:</div>
  • 文章网址规则:选择器 a (或者更精确的 div.item > a)

这样,织梦就会依次抓取到 /show/1.html/show/2.html/show/3.html

dede织梦采集 获取当前网址规则
(图片来源网络,侵删)

场景2:在“内容页”规则中获取当前文章的URL

页”规则时,你同样可以使用 {dede:field name='arcurl'/} 来指定文章的发布URL。

步骤:

  1. 进入“”设置。
  2. 页URL”:这里可以留空,因为列表页已经为我们提供了URL,或者你也可以填写一个通用的URL规则,http://www.example.com/show/{arcurl}
  3. 在“文章网址”的输入框中填写规则
    • 规则类型:选择“使用列表页网址”。
    • 直接填写 {dede:field name='arcurl'/}

为什么这样做? 这样做可以确保采集到的每篇文章的“文章网址”字段,都准确对应着它从列表页抓取到的原始链接,这对于后续的更新、维护和SEO非常重要。


进阶用法:结合“自定义内容处理”

获取到的URL可能是一个相对路径(如 /show/123.html),而不是完整的绝对路径(如 http://www.example.com/show/123.html),这时就需要进行二次处理。

步骤:

  1. 在“处理”区域,点击“增加”。
  2. 目标字段:选择“文章网址”。
  3. 处理方式:选择“替换”。
  4. :输入 ^/ (这是一个正则表达式,表示以斜杠 开头的字符串)。
  5. :输入你的网站域名,http://www.yoursite.com/

工作原理: 当织梦抓取到一个相对路径如 /show/123.html 时,这个规则会触发,将开头的 替换成 http://www.yoursite.com/,最终得到完整的URL http://www.yoursite.com/show/123.html


总结与注意事项

功能点 说明 应用场景
核心标签 {dede:field name='arcurl'/} 代表当前循环采集到的页面的URL。
使用前提 必须勾选“循环采集 从列表页、分页或内容页集合中批量提取链接。
主要用途 列表页规则中提取文章链接。
内容页规则中为文章指定发布链接。
采集新闻列表、博客文章列表等。
确保采集内容的来源链接准确无误。
常见问题 获取到的是相对路径,不是完整网址。 在“自定义内容处理”中使用“替换”功能,将相对路径补全为绝对路径。

关键提醒:

  • 循环是关键:不开启“循环采集”,{dede:field name='arcurl'/} 将无法获取到有效的值。
  • 选择器要准确:在列表页中,循环起始和结束的选择器一定要能精确地框住所有需要抓取的链接块,否则会漏采或错采。
  • 测试、测试、再测试:在正式采集前,一定要使用“测试采集”功能,查看 {dede:field name='arcurl'/} 是否按预期获取到了正确的URL。

通过灵活运用“获取当前网址”规则,你可以高效地完成绝大多数网站的批量内容采集工作。

-- 展开阅读全文 --
头像
Visual Studio C语言如何快速入门?
« 上一篇 12-07
C语言Boyer-Moore算法如何高效实现字符串匹配?
下一篇 » 12-07

相关文章

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