> ## Documentation Index
> Fetch the complete documentation index at: https://www.bazhuayu.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 规则优化

本篇主要讲解如何优化规则以采集更完整的数据

配置好了八爪鱼采集规则后，我们可以对规则进行一些优化，以更稳定地采集更完整的数据。

优化方向主要有以下三种：

* 一、设置执行前等待
* 二、设置/调整Ajax超时
* 三、设置页面滚动

## 一.设置执行前等待

执行前等待的意思是：在当前步骤等待一段时间，再执行下一个步骤

### 1、为什么要设置执行前等待?

① 避免执行步骤速度太快，很多时候网页还没加载完全就提取数据了，导致采集不到目标数据

② 对于一些防采集严重的网站，适当的设置执行前等待，放慢采集速度，可以有效降低或避免触发网站的防采集措施

### 2、如何设置执行前等待？

① 在八爪鱼规则中，所有的步骤均可以设置执行前等待。但如果给所有步骤设置执行前等待，采集速度会变得很慢。所以我们一般为【循环列表】、【点击元素/翻页】、【提取数据】等关键步骤设置执行前等待即可。

② 执行前等待的时间，需要根据网页实际加载情况而定。

如下对【点击元素】步骤设置执行前等待3秒；

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/bazhuayu/Yt154rSVqBF4hhhV/assets/academy/troubleshooting/rule-optimization/65bb114f0ac95.png?fit=max&auto=format&n=Yt154rSVqBF4hhhV&q=85&s=b5664b10ddf809b9564bc65629d12aec" alt="rule-optimization" width="275" height="637" data-path="assets/academy/troubleshooting/rule-optimization/65bb114f0ac95.png" />
</div>

## 二、设置/调整Ajax超时

Ajax是一种在无需重新加载整个网页的情况下，更新部分网页的技术。

Ajax超时本质上是执行当前步骤后等待一定时间，执行前等待是执行当前步骤前等待一段时间，两种互相配合，并不冲突。

### 1、为什么要设置/调整Ajax超时？

原因①：大多数情况下八爪鱼能自动识别Ajax网页并设置合适的Ajax超时时间，如果自动设置的Ajax时间过短，需根据网页实际情况进行调整。

原因②：有的网页本身打开很慢，但其实数据都加载出来了，可利用Ajax超时强制结束加载，比如一些国外网站。

原因③：网页本身是Ajax，但没自动识别出来，需手动设置。

### 2、如何设置/调整Ajax超时？

① 一般是对【点击元素】/【点击翻页】步骤设置Ajax超时。

② Ajax超时时间不建议太短，推荐设置为5-10秒。因为如果网页一时打开较慢，那么超时时间一到，网页就停止加载数据了，容易导致采集不到数据。

如下图对【点击元素】步骤设置Ajax加载7秒；

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/bazhuayu/Yt154rSVqBF4hhhV/assets/academy/troubleshooting/rule-optimization/65bb1d499f14e.png?fit=max&auto=format&n=Yt154rSVqBF4hhhV&q=85&s=b6fa9569118ecec7f92acdd9a2d5111e" alt="rule-optimization" width="275" height="562" data-path="assets/academy/troubleshooting/rule-optimization/65bb1d499f14e.png" />
</div>

## 三、设置页面滚动

即在打开一个新页面后，让页面向下滚动。

### 1、为什么要设置页面滚动？

原因①：有的瀑布流网页，向下滚动才能加载出新的数据。这个比较容易发现。

原因②：有的商品详情、文章详情，向下滚动才能加载出全部的数据，比如某个按钮，或者真实的图片地址。这个比较难发现，需要我们仔细观察目标网页。

### 2、如何设置页面滚动？

① 一般是对【打开网页】/【点击元素】/【点击翻页】等打开新页面的步骤设置滚动。

② 根据需求和网页情况设置滚动方式、滚动次数和每次滚动的间隔时间，推荐滚动【向下滚动一屏】的滚动方式，这样会采集更完整的数据，但也更费时间。

③ 具体设置方法和实例，请看 <a href="/docs/zh/academy/basic-collection/pagination/scroll-and-collect" target="_blank" rel="noopener noreferrer">滚动采集数据的方法教程</a>。

如下图对【点击元素】步骤设置向下滚动；

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/bazhuayu/Yt154rSVqBF4hhhV/assets/academy/troubleshooting/rule-optimization/65bb3b21d0028.png?fit=max&auto=format&n=Yt154rSVqBF4hhhV&q=85&s=bce5ce49f719af6e2ebaa34dbc3b2bc4" alt="rule-optimization" width="275" height="636" data-path="assets/academy/troubleshooting/rule-optimization/65bb3b21d0028.png" />
</div>
