dede采集分页规则如何设置?

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

为什么要设置分页规则?

网站上的文章列表或专题内容,常常被分成了多个页面(list_1.html, list_2.html...),DedeCMS 采集器默认只会抓取你指定的第一个 URL,为了抓取所有分页上的内容,你需要告诉采集器:

  1. 如何找到下一页的链接:通过分析 HTML 结构,找到一个规律性的链接模式。
  2. 何时停止抓取:设置一个最大页数,防止无限循环或抓取过多无效页面。

设置分页规则的步骤

在 DedeCMS 后台,进入 采集 -> 管理采集节点,点击你要编辑的节点,在“任务配置”页面,找到“列表分页设置”部分,就是你需要设置的地方。

这里有三个关键选项,通常它们是组合使用的:

列表起始页 (URL)

这是你采集任务的起点,通常是一个列表的第一页,

  • http://www.example.com/news/list_1.html
  • http://www.example.com/special/index.php?id=1

DedeCMS 会首先抓取这个页面,并根据你下面设置的规则来寻找后续的页面。

列表分页规则

这是整个分页采集的核心,它是一个“指令”,告诉采集器如何从当前页面找到下一页,规则由三部分组成:URL规则选择器JS支持

A. URL规则

这是最灵活的部分,用于匹配下一页链接的 URL 模式,它支持通配符 。

常见模式:

  • 数字递增模式 (最常见)

    • 场景: 网站的分页 URL 是 list_1.html, list_2.html, list_3.html...
    • URL规则: list_*.html
    • 说明: 会匹配 1, 2, 3 等数字,采集器会自动尝试 list_1.html, list_2.html... 直到没有页面或达到最大页数。
  • 参数递增模式

    • 场景: 网站的分页 URL 是 index.php?page=1, index.php?page=2...
    • URL规则: index.php?page=*
    • 说明: 会匹配 1, 2, 3 等数字,并替换到 page= 参数后面。
  • 包含目录的模式

    • 场景: URL 是 news/list/1.html, news/list/2.html...
    • URL规则: news/list/*.html
  • 复杂参数模式

    • 场景: URL 是 index.php?cat=5&pn=1, index.php?cat=5&pn=2...
    • URL规则: index.php?cat=5&pn=*
    • 说明: 这种情况下, 只会替换 pn= 后面的部分,而 cat=5 这样的固定参数会被保留。

最佳实践:

  1. 先去目标网站,手动点击几页“下一页”。
  2. 观察浏览器地址栏 URL 的变化规律。
  3. 将这个规律中的变量部分(如页码)替换成 ,填入“URL规则”中。

B. 选择器

如果网站的“下一页”按钮不是通过简单的 URL 规律实现,而是由 JavaScript 动态生成的,或者它的 URL 比较复杂,无法用通配符 描述,这时就需要使用“选择器”。

工作原理: 采集器会先抓取当前页面的 HTML 源码,然后使用你提供的选择器(类似 CSS 选择器)来定位到“下一页”的链接元素,并从中提取出真实的 URL。

如何获取选择器? 你需要使用浏览器的开发者工具(F12):

  1. 在目标列表页,右键点击“下一页”按钮。
  2. 选择“检查”(Inspect),会打开开发者工具并定位到对应的 HTML 代码。
  3. 分析这个 <a> 标签,找到它唯一的特征,classid 或者特定的 href 属性。
  4. 将这个特征写成 CSS 选择器格式。

示例: 假设“下一页”按钮的 HTML 是: <a class="next-page" href="/news/list_2.html">下一页</a>

选择器可以填写为:

  • .next-page (通过 class 选择)
  • a.next-page (更精确,指定是 a 标签且 class 为 next-page)

使用场景:

  • 网站使用 AJAX 加载分页内容,URL 中没有页码规律。
  • “下一页”的 URL 是相对路径(如 /list_2.html),需要结合当前域名才能使用。
  • URL 中包含大量动态参数(如时间戳、随机数),无法用 匹配。

JS 支持

这是一个开关,与“选择器”选项紧密相关。

  • 不勾选 (默认): 采集器会作为普通浏览器请求页面,获取原始 HTML,适用于绝大多数静态或伪静态网站。
  • 勾选: 采集器会启动一个无头浏览器(模拟真实浏览器环境)来加载页面。只有当你需要抓取由 JavaScript 动态渲染的“下一页”链接时,才需要勾选此项。

注意: 勾选 JS 支持会显著降低采集速度,并增加服务器资源消耗,仅在必要时使用。


综合应用实例

假设我们要采集 http://www.example.com/article/list_1.html 这个网站,它的分页规律如下:

  • 第1页: http://www.example.com/article/list_1.html
  • 第2页: http://www.example.com/article/list_2.html
  • 第10页: http://www.example.com/article/list_10.html
  • 第11页: http://www.example.com/article/list_11.html (这个页面不存在,404)

设置步骤:

  1. 列表起始页: http://www.example.com/article/list_1.html

  2. 列表分页规则:

    • URL规则: http://www.example.com/article/list_*.html
      • 注意:这里填写完整的 URL 模式,`` 代表页码。*
    • 选择器: 留空
      • 因为我们的 URL 规则已经足够清晰,不需要通过选择器来查找链接。
    • JS支持: 不勾选
      • 这是一个标准的静态分页 URL,不需要 JS。
  3. 最大页数: 20

    • 设置一个合理的上限,20 页,即使网站有 100 页,采集器也最多抓取 20 页,这可以防止因规则错误导致采集大量无效页面。

采集器的工作流程:

  1. list_1.html 开始采集。
  2. 采集完 list_1.html 后,根据 list_*.html 规则,自动拼接出 list_2.html 的 URL 并采集。
  3. 然后是 list_3.html, list_4.html...
  4. 当尝试访问 list_21.html 时,因为超过了“最大页数”20,采集任务停止。

常见问题与技巧

  1. 采集器只采集第一页,后续页没有采集?

    • 检查 URL 规则:是否和网站的实际分页 URL 格式不符?比如网站是 index.php?page=*,你却写了 list_*.html
    • 检查最大页数:是否设置得太小?比如网站有 50 页,你只设置了 5 页。
    • 检查网站结构:是否使用了 JS 动态加载分页?如果是,需要使用“选择器”并勾选“JS支持”。
  2. 采集到的内容重复或错乱?

    • 检查分页规则:规则可能写错了,导致采集器跳过了某些页面或重复采集了某些页面,仔细核对 URL 规则。
    • 检查列表内容选择器:确保你设置的“文章内容链接”选择器在每一页上都能准确地、唯一地指向正确的文章。
  3. 如何处理相对路径的分页?

    • 场景: “下一页”的 href/list_2.html,而不是完整的 http://www.example.com/list_2.html
    • 解决方案:
      • 方法一 (推荐): 在“URL规则”中填写完整的 URL 模式,http://www.example.com/list_*.html,DedeCMS 会自动处理。
      • 方法二: 如果无法确定完整域名,可以使用“选择器”,在开发者工具中找到 <a href="/list_2.html">,选择器可以写成 a[href^="/list_"] (选择 href 属性以 /list_ 开头的 a 标签),采集器会自动补全域名。
  4. 分页规则无法匹配怎么办?

    • 手动分析页面源码,看看“下一页”的链接到底是怎么生成的。
    • 尝试用最简单的规则开始测试,比如只写 ,看看采集器生成的 URL 是什么,再逐步调整。
    • 对于极其复杂的网站,可能 DedeCMS 的分页采集功能难以胜任,需要考虑其他更强大的采集工具或编写自定义脚本。

设置 DedeCMS 采集分页规则,关键在于观察规律精准描述

  1. 观察: 仔细分析目标网站分页 URL 的变化模式。
  2. 描述: 使用 URL规则 ( 通配符) 来描述简单的、可预测的规律。
  3. 补充: 对于复杂的、JS 动态生成的链接,使用 选择器 来精确定位。
  4. 保险: 设置一个合理的 最大页数 作为安全阀。

通过以上步骤,你就可以成功配置绝大多数网站的分页采集任务了。

-- 展开阅读全文 --
头像
dede首页图片轮播如何实现?
« 上一篇 昨天
织梦手机版调用评论
下一篇 » 今天

相关文章

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

目录[+]