自动JS渲染

当需要爬取网页中JS动态生成的数据是, 该怎么处理呢? 使用神箭手提供的自动JS渲染服务即可. 您可以使用两种方式对HTTP请求自动JS渲染: “全局自动JS渲染”, “单个HTTP请求自动JS渲染”.

两种方式的区别:

注意:

1. 自动JS渲染的总超时时间是2分钟;

2. timeout, 表示下载单个网页或加载网页中每个资源的超时时间;

3. renderTime, 表示在自动JS渲染的过程中, 如果在设置的该时间内未发送HTTP请求或加载网页资源, 自动JS渲染会立即停止.

方式一 全局自动JS渲染

在configs对象中添加成员enableJS并设置为true, 就开启了全局自动JS渲染.

通用栗子:

var configs = {
// 开启全局自动JS渲染
enableJS: true,
// 下载单个网页或加载网页中每个资源的超时时间为6秒
timeout: 6000,
// 在10秒内未发送HTTP请求或加载网页资源, 自动JS渲染会立即停止
renderTime: 10000,
// configs的其他成员
...
};

方式二 单个HTTP请求自动JS渲染

site.addUrl, site.addScanUrlsite.requestUrl传入的options参数中设置enableJS: true, 便可为单个HTTP请求自动JS渲染.

通用栗子:

var configs = {
// 下载单个网页或加载网页中每个资源的超时时间为6秒
timeout: 6000,
// 在10秒内未发送HTTP请求或加载网页资源, 自动JS渲染会立即停止
renderTime: 10000,
// configs的其他成员
...
};
configs.afterDownloadPage = function(page, site) {
var options = {
enableJS: true
};
// 为该HTTP请求自动JS渲染
site.requestUrl("http://www.demo.cn/", options);
return page;
};

此外, 神箭手还为自动JS渲染的网页增加了模拟点击事件, 该事件可在site.addUrlsite.addScanUrl函数中设置. 点此查看示栗代码