Skip to content

API Invoke Example

Naibo Wang edited this page Feb 5, 2024 · 15 revisions

POSTMAN示例

假设有3个输入参数可以被修改,其调用名称分别为:urlList_0loopTimes_循环_1inputText_2,分别表示打开网页操作的网址列表,循环点击下一页操作的点击次数以及输入文字操作的输入值,我们分别要输入示例值如下:

则在POSTMAN中,可以设置以下配置来获得新的任务ID:

  • 调用方法:POST
  • 调用地址:http://localhost:8074/invokeTask
  • Body字段类型:x-www-form-urlencoded
  • 键值对:
    • id: 任务的id号,在API调用网址后面写了id=ID: image

    • EID:已存在的任务执行ID,如果传递了此值,则为覆盖模式,新的配置将会覆盖原执行ID对应的配置文件(0.6.0以上支持)。

    • params: 一个键值对对象,包含了所有输入参数的键:值形式(0.5.0及之前版本请使用paras),如:

      {"urlList_0":"https://www.baidu.com/s?wd=1\r\nhttps://www.baidu.com/s?wd=1\r\nhttps://www.baidu.com/s?wd=3","loopTimes_循环_1":"15","inputText_2":"TEST"}

示例截图如下:

image

全部配置完成后点击发送请求按钮,如果成功,会得到一个任务ID号:

image

即可通过此ID,配合命令行执行的命令来执行任务,如执行任务ID号为37的命令为:

cd 你的EasySpider文件夹,如cd D:\Document\Projects\EasySpider
./EasySpider/resources/app/chrome_win64/easyspider_executestage.exe --id [37] --user_data 0 --server_address http://localhost:8074 --config_folder "D:/Document/Projects/EasySpider/ElectronJS/" --headless 0 --read_type remote --config_file_name config.json --saved_file_name 

JavaScript代码示例

如果想要通过API调用的方式获得任务执行ID,可以参考以下文件:

https://github.com/NaiboWang/EasySpider/blob/v0.3.1/ElectronJS/src/taskGrid/invokeTask.html

参考此文件的第237行开始的localExecuteInstant方法的POST调用案例:

let param = {};
let t = $('#form').serializeArray();
t.forEach(function (item, index) {
    param[item.name] = item.value;
});
let message = {
       id: TASKID, //这里写任务ID号,如1
       EID: "1", //已存在的任务执行ID,可不设置表示新增一个配置,如果设置则表示覆盖此EID对应的配置
       params: JSON.stringify(param)
}
//这里本质上就是在生成一个对象,示例的message内容为:
//{
//  "id": 157,
//  "EID": 1,
//  "params": '{"urlList_0":"https://www.jd.com","loopTimes_循环_1":"0","inputText_2":""}'
//}
$.post("http://localhost:8074/invokeTask", message, function (EID) {
   console.log("任务ID为:", EID);
});

以上POST请求将返回任务执行IDexecution_ID,接下来使用命令行传入此ID即可执行任务。

后台处理逻辑

后台处理逻辑在以下文件的第223行:

https://github.com/NaiboWang/EasySpider/blob/v0.3.1/ElectronJS/server.js

后台处理参数的本质就是将tasks文件夹内的任务的.json文件中的默认的参数替换为给定的输入参数值,其余内容保持不变并在execution_instances文件夹内生成新的任务.json文件,然后供程序调用。