diff --git a/ElectronJS/EasySpider_en.crx b/ElectronJS/EasySpider_en.crx index 95103cb..7d1a530 100644 Binary files a/ElectronJS/EasySpider_en.crx and b/ElectronJS/EasySpider_en.crx differ diff --git a/ElectronJS/EasySpider_zh.crx b/ElectronJS/EasySpider_zh.crx index d9c50a3..17b1921 100644 Binary files a/ElectronJS/EasySpider_zh.crx and b/ElectronJS/EasySpider_zh.crx differ diff --git a/ElectronJS/change_version.py b/ElectronJS/change_version.py index b5c9a2d..a71b2d3 100644 --- a/ElectronJS/change_version.py +++ b/ElectronJS/change_version.py @@ -50,7 +50,7 @@ if __name__ == "__main__": # index.html file_path = "./src/index.html" - update_file_version(file_path, version, key="当前版本/Current Version: v") + update_file_version(file_path, version, key="当前版本/Current Version: v") # package.json file_path = "./package.json" diff --git a/ElectronJS/config.json b/ElectronJS/config.json index d7f6cab..522f720 100644 --- a/ElectronJS/config.json +++ b/ElectronJS/config.json @@ -1 +1 @@ -{"webserver_address":"http://localhost","webserver_port":8074,"user_data_folder":"./user_data","absolute_user_data_folder":"D:\\Documents\\Projects\\EasySpider\\ElectronJS\\user_data"} \ No newline at end of file +{"webserver_address":"http://localhost","webserver_port":8074,"user_data_folder":"./user_data","absolute_user_data_folder":"D:\\Document\\Projects\\EasySpider\\ElectronJS\\user_data"} \ No newline at end of file diff --git a/ElectronJS/main.js b/ElectronJS/main.js index 7707833..f089802 100644 --- a/ElectronJS/main.js +++ b/ElectronJS/main.js @@ -124,7 +124,7 @@ async function beginInvoke(msg, ws) { flowchart_window.show(); // flowchart_window.openDevTools(); } else if (msg.type == 2) { - //keyboard + // 键盘输入事件 // const robot = require("@jitsi/robotjs"); let keyInfo = msg.message.keyboardStr; let handles = await driver.getAllWindowHandles(); @@ -137,6 +137,12 @@ async function beginInvoke(msg, ws) { while (true) { // console.log("handles"); try{ + let iframe = msg.message.iframe; + let enter = false; + if (//i.test(keyInfo)) { + keyInfo = keyInfo.replace(//gi, ''); + enter = true; + } let h = order[len - 1]; console.log("current_handle", current_handle); if(h != null && handles.includes(h)){ @@ -146,11 +152,42 @@ async function beginInvoke(msg, ws) { } // await driver.executeScript("window.stop();"); // console.log("executeScript"); - let element = await driver.findElement(By.xpath(msg.message.xpath)); - console.log("Find Element at handle: ", current_handle); - await element.sendKeys(Key.HOME, Key.chord(Key.SHIFT, Key.END), keyInfo); - console.log("send key"); - break; + if(!iframe){ + let element = await driver.findElement(By.xpath(msg.message.xpath)); + console.log("Find Element at handle: ", current_handle); + // 使用正则表达式匹配 '',不论大小写 + await element.sendKeys(Key.HOME, Key.chord(Key.SHIFT, Key.END), keyInfo); + if(enter){ + await element.sendKeys(Key.ENTER); + } + console.log("send key"); + break; + } else { + let iframes = await driver.findElements(By.tagName('iframe')); + // 遍历所有的 iframe 并点击里面的元素 + for(let i = 0; i < iframes.length; i++) { + let iframe = iframes[i]; + // 切换到 iframe + await driver.switchTo().frame(iframe); + // 在 iframe 中查找并点击元素 + let element; + try { + element = await driver.findElement(By.xpath(msg.message.xpath)); + } catch (error) { + console.log('No such element found in the iframe'); + } + if (element) { + await element.sendKeys(Key.HOME, Key.chord(Key.SHIFT, Key.END), keyInfo); + if(enter){ + await element.sendKeys(Key.ENTER); + } + } + // 完成操作后切回主文档 + await driver.switchTo().defaultContent(); + } + break; + } + } catch (error) { console.log("len", len); len = len - 1; @@ -186,7 +223,10 @@ async function beginInvoke(msg, ws) { let message = JSON.parse(msg.message.pipe); let type = message.type; console.log("FROM Browser: ", message); + console.log("Iframe:", message.iframe); if(type.indexOf("Click")>=0){ + // 鼠标点击事件 + let iframe = message.iframe; let handles = await driver.getAllWindowHandles(); console.log("handles", handles); let exit = false; @@ -199,15 +239,39 @@ async function beginInvoke(msg, ws) { let h = order[len - 1]; console.log("current_handle", current_handle); if(h != null && handles.includes(h)){ - await driver.switchTo().window(h); + await driver.switchTo().window(h); //执行失败会抛出异常 current_handle = h; console.log("switch to handle: ", h); } - let element = await driver.findElement(By.xpath(message.xpath)); - await element.click(); - break; + //下面是找到窗口的情况下 + if(!iframe){ + let element = await driver.findElement(By.xpath(message.xpath)); + await element.click(); + break; + } else { + let iframes = await driver.findElements(By.tagName('iframe')); + // 遍历所有的 iframe 并点击里面的元素 + for(let i = 0; i < iframes.length; i++) { + let iframe = iframes[i]; + // 切换到 iframe + await driver.switchTo().frame(iframe); + // 在 iframe 中查找并点击元素 + let element; + try { + element = await driver.findElement(By.xpath(message.xpath)); + } catch (error) { + console.log('No such element found in the iframe'); + } + if (element) { + await element.click(); + } + // 完成操作后切回主文档 + await driver.switchTo().defaultContent(); + } + break; + } } catch (error) { - console.log("len", len); + console.log("len", len); //如果没有找到元素,就切换到下一个窗口 len = len - 1; if (len == 0) { break; @@ -321,7 +385,6 @@ async function runBrowser(lang = "en", user_data_folder = '', mobile = false) { } options.addExtensions(path.join(__dirname, "XPathHelper.crx")); options.setChromeBinaryPath(chromeBinaryPath); - options.add if (user_data_folder != "") { let dir = path.join(task_server.getDir(), user_data_folder); console.log(dir); @@ -445,4 +508,4 @@ app.on('window-all-closed', function () { function arrayDifference(arr1, arr2) { return arr1.filter(item => !arr2.includes(item)); -} \ No newline at end of file +} diff --git a/ElectronJS/src/index.html b/ElectronJS/src/index.html index b8b3616..ce88a84 100644 --- a/ElectronJS/src/index.html +++ b/ElectronJS/src/index.html @@ -40,7 +40,7 @@

English

-

当前版本/Current Version: v0.3.5

+

当前版本/Current Version: v0.3.5

Github最新版本/Newest Version:{{newest_version}}

@@ -111,13 +111,13 @@

Start Design

+ style="margin-top: 15px; width: 320px;height:60px;padding-top:12px;color:white">Start Design

Start Design (Mobile)

+ style="margin-top: 15px; width: 320px;height:60px;padding-top:12px;color:white">Start Design (Mobile)

- Go to Home Page + Go to Home Page

@@ -175,13 +175,13 @@

开始设计

+ style="margin-top: 15px; width: 320px;height:60px;padding-top:12px;color:white">开始设计

开始设计(手机模式)

+ style="margin-top: 15px; width: 320px;height:60px;padding-top:12px;color:white">开始设计(手机模式)

- 返回首页 + 返回首页

@@ -193,4 +193,4 @@ - \ No newline at end of file + diff --git a/ElectronJS/src/taskGrid/FlowChart.html b/ElectronJS/src/taskGrid/FlowChart.html index 410aa55..ffbef61 100644 --- a/ElectronJS/src/taskGrid/FlowChart.html +++ b/ElectronJS/src/taskGrid/FlowChart.html @@ -122,6 +122,7 @@

Use element inside the Loop

+

Element is inside iframe

@@ -198,6 +199,7 @@

Current parameter name (Clicking on the "Modify" option of the field toggles the parameters)

Use relative XPath

+

Element is inside iframe

XPATH:

@@ -276,6 +278,7 @@

Use text inside the Loop (If not checked, the text entered each time will be the text inside the "Input Value" textbox below. If checked, the text set within the loop will be used)

+

Element is inside iframe

@@ -305,6 +308,7 @@
+

Action is inside iframe

Element is inside iframe

@@ -352,6 +357,7 @@

Use element inside the loop

+

Element is inside iframe

@@ -362,6 +368,7 @@
+

Operation is in iframe

Operation is in iframe

- 使用循环内的元素

+

元素在iframe内

@@ -199,6 +200,7 @@

当前编辑字段参数名(点击字段的“修改”选项切换参数):

使用相对循环内的XPATH

+

元素在iframe内

XPath:

@@ -277,6 +279,7 @@

使用循环内的文本(不勾选则每次输入的文本为下方“输入值”文本框内的文本,勾选后会使用所在循环内设置的文本)

+

元素在iframe内

@@ -306,6 +309,7 @@
+

操作在iframe内

元素在iframe内

@@ -353,6 +358,7 @@

使用循环内的元素

+

元素在iframe内

@@ -363,6 +369,7 @@
+

在iframe内操作

在iframe内操作

+
@@ -554,4 +563,4 @@ - \ No newline at end of file + diff --git a/ElectronJS/src/taskGrid/logic.js b/ElectronJS/src/taskGrid/logic.js index c30b18b..b8bd79f 100644 --- a/ElectronJS/src/taskGrid/logic.js +++ b/ElectronJS/src/taskGrid/logic.js @@ -48,6 +48,7 @@ function changeGetDataParameters(msg, i) { msg["parameters"][i]["afterJS"] = ""; //执行后执行的js msg["parameters"][i]["afterJSWaitTime"] = 0; //执行后js等待时间 msg["parameters"][i]["downloadPic"] = 0; //是否下载图片 + msg["parameters"][i]["iframe"] = false; //是否在iframe中 } @@ -141,12 +142,14 @@ function addParameters(t) { tabIndex: 0, useLoop: false, //是否使用循环中的元素 xpath: "", //xpath + iframe: false, //是否在iframe中 wait: 0, //执行后等待 waitType: 0, //等待类型,0代表固定时间,1代表随机等待 beforeJS: "", //执行前执行的js beforeJSWaitTime: 0, //执行前js等待时间 afterJS: "", //执行后执行的js afterJSWaitTime: 0, //执行后js等待时间 + iframe: false, //是否在iframe中 }; //公共参数处理 if (t.option == 1) { t["parameters"]["url"] = "about:blank"; @@ -209,6 +212,7 @@ function addParameters(t) { function modifyParameters(t, para) { t["parameters"]["history"] = para["history"]; t["parameters"]["tabIndex"] = para["tabIndex"]; + t["parameters"]["iframe"] = para["iframe"]; if (t.option == 1) { t["parameters"]["url"] = para["url"]; t["parameters"]["links"] = para["links"]; @@ -455,4 +459,4 @@ if (sId != null && sId != -1) //加载任务 }); } else { refresh(); //新增任务 -} \ No newline at end of file +} diff --git a/ElectronJS/src/taskGrid/logic_CN.js b/ElectronJS/src/taskGrid/logic_CN.js index d05479c..e3c47dd 100644 --- a/ElectronJS/src/taskGrid/logic_CN.js +++ b/ElectronJS/src/taskGrid/logic_CN.js @@ -141,6 +141,7 @@ function addParameters(t) { tabIndex: 0, useLoop: false, //是否使用循环中的元素 xpath: "", //xpath + iframe: false, //是否在iframe中 wait: 0, //执行后等待 waitType: 0, //等待类型,0代表固定时间,1代表随机等待 beforeJS: "", //执行前执行的js @@ -209,6 +210,7 @@ function addParameters(t) { function modifyParameters(t, para) { t["parameters"]["history"] = para["history"]; t["parameters"]["tabIndex"] = para["tabIndex"]; + t["parameters"]["iframe"] = para["iframe"]; if (t.option == 1) { t["parameters"]["url"] = para["url"]; t["parameters"]["links"] = para["links"]; @@ -455,4 +457,4 @@ if (sId != null && sId != -1) //加载任务 }); } else { refresh(); //新增任务 -} \ No newline at end of file +} diff --git a/ElectronJS/tasks/111.json b/ElectronJS/tasks/111.json new file mode 100644 index 0000000..21f0173 --- /dev/null +++ b/ElectronJS/tasks/111.json @@ -0,0 +1 @@ +{"id":111,"name":"Youtube","url":"https://www.youtube.com","links":"https://www.youtube.com","create_time":"7/4/2023, 2:04:15 AM","version":"0.3.5","saveThreshold":10,"cloudflare":0,"environment":0,"containJudge":false,"desc":"https://www.youtube.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.youtube.com","desc":"要采集的网址列表,多行以\\n分开","type":"string","exampleValue":"https://www.youtube.com"}],"outputParameters":[{"id":0,"name":"自定义参数_0","desc":"","type":"string","exampleValue":"自定义字段"},{"id":1,"name":"自定义参数_1","desc":"","type":"string","exampleValue":"自定义字段"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,4],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.youtube.com","links":"https://www.youtube.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1}},{"id":-1,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/ytd-app[1]/div[1]/ytd-page-manager[1]/ytd-browse[1]/ytd-two-column-browse-results-renderer[1]/div[1]/ytd-rich-grid-renderer[1]/div[6]/ytd-rich-grid-row[1]/div[1]/ytd-rich-item-renderer[1]/div[1]/ytd-rich-grid-media[1]/div[1]/div[2]/div[1]/h3[1]/a[1]","//a[contains(., 'I Want to')]","id(\"video-title-link\")","//A[@class='yt-simple-endpoint focus-on-expand style-scope ytd-rich-grid-media']","/html/body/ytd-app/div[last()-1]/ytd-page-manager/ytd-browse/ytd-two-column-browse-results-renderer/div[last()-1]/ytd-rich-grid-renderer/div/ytd-rich-grid-row[last()-4]/div/ytd-rich-item-renderer[last()-3]/div/ytd-rich-grid-media/div[last()-1]/div[last()-1]/div[last()-1]/h3/a"]}},{"id":-1,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"paras":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"I Want to Apologise to People in Singapore"}],"unique_index":"esmaxcela6iljn5v1nj","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"/watch?v=mNOFk8jNx88"}],"unique_index":"esmaxcela6iljn5v1nj","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":2,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"//ytd-rich-item-renderer//ytd-rich-grid-media//a[@id='video-title-link']","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"1","pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":5,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"paras":[{"nodeType":0,"contentType":0,"relative":true,"name":"自定义参数_0","desc":"","extractType":0,"relativeXPath":"","allXPaths":[],"exampleValues":[{"num":0,"value":"自定义字段"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"自定义参数_1","desc":"","extractType":0,"relativeXPath":"","allXPaths":[],"exampleValues":[{"num":0,"value":"自定义字段"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}}]} \ No newline at end of file diff --git a/ElectronJS/tasks/112.json b/ElectronJS/tasks/112.json new file mode 100644 index 0000000..b675c25 --- /dev/null +++ b/ElectronJS/tasks/112.json @@ -0,0 +1 @@ +{"id":112,"name":"中国地震台网——历史查询 - 子元素","url":"http://www.ceic.ac.cn/history","links":"http://www.ceic.ac.cn/history","create_time":"7/4/2023, 2:08:29 AM","version":"0.3.5","saveThreshold":10,"cloudflare":0,"environment":0,"containJudge":false,"desc":"http://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"http://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"string","exampleValue":"http://www.ceic.ac.cn/history"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"string","exampleValue":"12","value":"12"},{"id":2,"name":"loopTimes_循环_2","nodeId":4,"nodeName":"循环","desc":"循环循环执行的次数(0代表无限循环)","type":"int","exampleValue":10,"value":10}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"string","exampleValue":"3.8"},{"id":1,"name":"参数2_文本","desc":"","type":"string","exampleValue":"2023-06-1117:40:14"},{"id":2,"name":"参数3_文本","desc":"","type":"string","exampleValue":"40.79"},{"id":3,"name":"参数4_文本","desc":"","type":"string","exampleValue":"82.63"},{"id":4,"name":"参数5_文本","desc":"","type":"string","exampleValue":"20"},{"id":5,"name":"参数6_链接文本","desc":"","type":"string","exampleValue":"新疆阿克苏地区沙雅县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"string","exampleValue":"https://news.ceic.ac.cn/CD20230611174015.html"},{"id":7,"name":"参数8_文本","desc":"","type":"string","exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"string","exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"string","exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"string","exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"string","exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"string","exampleValue":"参考位置"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,4],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"http://www.ceic.ac.cn/history","links":"http://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"weidu1\"]","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"value":"12","allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[2]/input[1]","//input[contains(., '')]","id(\"weidu1\")","//INPUT[@class='span1']","//INPUT[@name='weidu1']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div[last()-3]/input[last()-1]"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","wait":2,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"paras":[],"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]","//a[contains(., '查询')]","id(\"search\")","//A[@class='check']","/html/body/div[last()-3]/div[last()-1]/div/div/div[last()-1]/form/div/a"]}},{"id":4,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[6,5],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":0,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":10,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"waitType":"1"}},{"id":6,"index":5,"parentId":4,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[10]/a[1]","wait":2,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"paras":[],"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/ul[1]/li[10]/a[1]","//a[contains(., '»')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div/div/div/ul/li[last()-1]/a"],"loopType":0}},{"id":5,"index":6,"parentId":4,"type":1,"option":8,"title":"循环","sequence":[7],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[1]/div[3]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]","//tr[contains(., '震级(M)发震时刻(')]","//TR[@class='speed-tr-h1']","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]"]}},{"id":7,"index":7,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"paras":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]","allXPaths":["/td[1]","//td[contains(., '3.8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.8"},{"num":2,"value":"3.8"},{"num":3,"value":"4.4"},{"num":4,"value":"5.6"},{"num":5,"value":"5.3"},{"num":6,"value":"3.1"},{"num":7,"value":"3.2"},{"num":8,"value":"3.7"},{"num":9,"value":"3.6"},{"num":10,"value":"6.2"},{"num":11,"value":"2.2"},{"num":12,"value":"3.0"},{"num":13,"value":"4.1"},{"num":14,"value":"5.2"},{"num":15,"value":"3.6"},{"num":16,"value":"3.7"},{"num":17,"value":"3.3"},{"num":18,"value":"4.3"},{"num":19,"value":"3.6"},{"num":20,"value":"6.2"}],"unique_index":"/td[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]","allXPaths":["/td[2]","//td[contains(., '2023-06-11')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-06-1117:40:14"},{"num":2,"value":"2023-06-1801:08:11"},{"num":3,"value":"2023-06-1800:14:24"},{"num":4,"value":"2023-06-1719:35:59"},{"num":5,"value":"2023-06-1708:26:14"},{"num":6,"value":"2023-06-1708:05:51"},{"num":7,"value":"2023-06-1601:19:35"},{"num":8,"value":"2023-06-1521:58:09"},{"num":9,"value":"2023-06-1511:21:27"},{"num":10,"value":"2023-06-1510:19:24"},{"num":11,"value":"2023-06-1422:24:41"},{"num":12,"value":"2023-06-1413:39:40"},{"num":13,"value":"2023-06-1404:17:56"},{"num":14,"value":"2023-06-1316:03:43"},{"num":15,"value":"2023-06-1308:48:30"},{"num":16,"value":"2023-06-1305:52:59"},{"num":17,"value":"2023-06-1200:04:18"},{"num":18,"value":"2023-06-1120:25:38"},{"num":19,"value":"2023-06-1119:29:45"},{"num":20,"value":"2023-06-1117:54:45"}],"unique_index":"/td[2]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数3_文本","desc":"","relativeXPath":"/td[3]","allXPaths":["/td[3]","//td[contains(., '40.79')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td[last()-3]"],"exampleValues":[{"num":0,"value":"40.79"},{"num":2,"value":"35.80"},{"num":3,"value":"35.79"},{"num":4,"value":"47.75"},{"num":5,"value":"41.10"},{"num":6,"value":"39.58"},{"num":7,"value":"38.31"},{"num":8,"value":"40.14"},{"num":9,"value":"32.44"},{"num":10,"value":"13.80"},{"num":11,"value":"37.12"},{"num":12,"value":"38.16"},{"num":13,"value":"41.71"},{"num":14,"value":"33.10"},{"num":15,"value":"40.18"},{"num":16,"value":"33.10"},{"num":17,"value":"43.38"},{"num":18,"value":"24.26"},{"num":19,"value":"48.74"},{"num":20,"value":"42.50"}],"unique_index":"/td[3]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/td[4]","allXPaths":["/td[4]","//td[contains(., '82.63')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td[last()-2]"],"exampleValues":[{"num":0,"value":"82.63"},{"num":2,"value":"79.78"},{"num":3,"value":"79.83"},{"num":4,"value":"147.60"},{"num":5,"value":"142.80"},{"num":6,"value":"82.57"},{"num":7,"value":"89.40"},{"num":8,"value":"77.46"},{"num":9,"value":"94.24"},{"num":10,"value":"120.85"},{"num":11,"value":"114.78"},{"num":12,"value":"88.79"},{"num":13,"value":"80.81"},{"num":14,"value":"75.80"},{"num":15,"value":"83.80"},{"num":16,"value":"86.73"},{"num":17,"value":"88.98"},{"num":18,"value":"122.47"},{"num":19,"value":"129.79"},{"num":20,"value":"142.00"}],"unique_index":"/td[4]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '20')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td[last()-1]"],"exampleValues":[{"num":0,"value":"20"},{"num":2,"value":"10"},{"num":3,"value":"10"},{"num":4,"value":"430"},{"num":5,"value":"10"},{"num":6,"value":"20"},{"num":7,"value":"10"},{"num":8,"value":"23"},{"num":9,"value":"10"},{"num":10,"value":"100"},{"num":11,"value":"10"},{"num":12,"value":"9"},{"num":13,"value":"10"},{"num":14,"value":"20"},{"num":15,"value":"18"},{"num":16,"value":"10"},{"num":17,"value":"19"},{"num":18,"value":"27"},{"num":19,"value":"17"},{"num":20,"value":"130"}],"unique_index":"/td[5]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆阿克苏地区沙雅县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td/a"],"exampleValues":[{"num":0,"value":"新疆阿克苏地区沙雅县"},{"num":2,"value":"新疆和田地区和田县"},{"num":3,"value":"新疆和田地区和田县"},{"num":4,"value":"千岛群岛西北"},{"num":5,"value":"日本本州东岸近海"},{"num":6,"value":"新疆阿克苏地区沙雅县"},{"num":7,"value":"新疆巴音郭楞州若羌县"},{"num":8,"value":"新疆克孜勒苏州阿图什市"},{"num":9,"value":"西藏那曲市巴青县"},{"num":10,"value":"菲律宾"},{"num":11,"value":"河北邢台市任泽区"},{"num":12,"value":"新疆巴音郭楞州若羌县"},{"num":13,"value":"新疆阿克苏地区温宿县"},{"num":14,"value":"克什米尔地区"},{"num":15,"value":"新疆阿克苏地区沙雅县"},{"num":16,"value":"西藏那曲市尼玛县"},{"num":17,"value":"新疆吐鲁番市高昌区"},{"num":18,"value":"台湾花莲县海域"},{"num":19,"value":"黑龙江伊春市嘉荫县"},{"num":20,"value":"日本北海道"}],"unique_index":"/td[6]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/td[6]/a[1]","allXPaths":["/td[6]/a[1]","//a[contains(., '新疆阿克苏地区沙雅县')]","id(\"cid\")","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CD20230611174015.html"},{"num":2,"value":"https://news.ceic.ac.cn/CD20230618010812.html"},{"num":3,"value":"https://news.ceic.ac.cn/CD20230618001425.html"},{"num":4,"value":"https://news.ceic.ac.cn/CC20230617193560.html"},{"num":5,"value":"https://news.ceic.ac.cn/CC20230617082615.html"},{"num":6,"value":"https://news.ceic.ac.cn/CD20230617080552.html"},{"num":7,"value":"https://news.ceic.ac.cn/CD20230616011935.html"},{"num":8,"value":"https://news.ceic.ac.cn/CD20230615215810.html"},{"num":9,"value":"https://news.ceic.ac.cn/CD20230615112127.html"},{"num":10,"value":"https://news.ceic.ac.cn/CC20230615101924.html"},{"num":11,"value":"https://news.ceic.ac.cn/CD20230614222441.html"},{"num":12,"value":"https://news.ceic.ac.cn/CD20230614133941.html"},{"num":13,"value":"https://news.ceic.ac.cn/CD20230614041757.html"},{"num":14,"value":"https://news.ceic.ac.cn/CC20230613160344.html"},{"num":15,"value":"https://news.ceic.ac.cn/CD20230613084830.html"},{"num":16,"value":"https://news.ceic.ac.cn/CC20230613055259.html"},{"num":17,"value":"https://news.ceic.ac.cn/CD20230612000419.html"},{"num":18,"value":"https://news.ceic.ac.cn/CD20230611202539.html"},{"num":19,"value":"https://news.ceic.ac.cn/CD20230611192945.html"},{"num":20,"value":"https://news.ceic.ac.cn/CC20230611175446.html"}],"unique_index":"/td[6]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数8_文本","desc":"","relativeXPath":"/th[1]","allXPaths":["/th[1]","//th[contains(., '震级(M)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-5]"],"exampleValues":[{"num":1,"value":"震级(M)"}],"unique_index":"/th[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数9_文本","desc":"","relativeXPath":"/th[2]","allXPaths":["/th[2]","//th[contains(., '发震时刻(UTC+8')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-4]"],"exampleValues":[{"num":1,"value":"发震时刻(UTC+8)"}],"unique_index":"/th[2]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/th[3]","allXPaths":["/th[3]","//th[contains(., '纬度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-3]"],"exampleValues":[{"num":1,"value":"纬度(°)"}],"unique_index":"/th[3]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数11_文本","desc":"","relativeXPath":"/th[4]","allXPaths":["/th[4]","//th[contains(., '经度(°)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-2]"],"exampleValues":[{"num":1,"value":"经度(°)"}],"unique_index":"/th[4]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数12_文本","desc":"","relativeXPath":"/th[5]","allXPaths":["/th[5]","//th[contains(., '深度(千米)')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th[last()-1]"],"exampleValues":[{"num":1,"value":"深度(千米)"}],"unique_index":"/th[5]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数13_文本","desc":"","relativeXPath":"/th[6]","allXPaths":["/th[6]","//th[contains(., '参考位置')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-20]/th"],"exampleValues":[{"num":1,"value":"参考位置"}],"unique_index":"/th[6]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":-1,"index":8,"parentId":5,"type":2,"option":9,"title":"判断条件","sequence":[9],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0}},{"id":-1,"parentId":7,"index":9,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"class":"3","value":"新疆","code":"","waitTime":0},"position":0},{"id":-1,"parentId":7,"index":10,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/ElectronJS/tasks/113.json b/ElectronJS/tasks/113.json new file mode 100644 index 0000000..677bc57 --- /dev/null +++ b/ElectronJS/tasks/113.json @@ -0,0 +1 @@ +{"id":113,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"7/4/2023, 2:12:31 AM","version":"0.3.5","saveThreshold":10,"cloudflare":0,"environment":0,"containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"string","exampleValue":"https://www.jd.com"},{"id":1,"name":"inputText_1","nodeName":"输入文字","nodeId":2,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"string","exampleValue":"iPhone","value":"iPhone"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\n\t\t\t\t \t"},{"id":1,"name":"参数2_链接地址","desc":"","type":"string","exampleValue":"//item.jd.com/100038089781.html"},{"id":2,"name":"参数3_图片地址","desc":"","type":"string","exampleValue":"//img11.360buyimg.com/n7/jfs/t1/191960/4/28218/17255/63196f11Ee943e61b/ec9d8feadce365fe.jpg"},{"id":3,"name":"参数4_文本","desc":"","type":"string","exampleValue":"<"},{"id":4,"name":"参数5_文本","desc":"","type":"string","exampleValue":">"},{"id":5,"name":"参数6_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":6,"name":"参数7_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":7,"name":"参数8_图片地址","desc":"","type":"string","exampleValue":"//img11.360buyimg.com/n7/jfs/t1/191960/4/28218/17255/63196f11Ee943e61b/ec9d8feadce365fe.jpg"},{"id":8,"name":"参数9_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":9,"name":"参数10_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":10,"name":"参数11_图片地址","desc":"","type":"string","exampleValue":"//img13.360buyimg.com/n7/jfs/t1/58549/24/22211/18752/63196e79E30ec4e33/5f9ce38bdbacf96c.jpg"},{"id":11,"name":"参数12_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":12,"name":"参数13_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":13,"name":"参数14_图片地址","desc":"","type":"string","exampleValue":"//img10.360buyimg.com/n7/jfs/t1/50423/12/21455/19477/6319674cE5de04487/71457158f73abe8f.jpg"},{"id":14,"name":"参数15_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":15,"name":"参数16_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":16,"name":"参数17_图片地址","desc":"","type":"string","exampleValue":"//img11.360buyimg.com/n7/jfs/t1/145950/1/30473/21295/63196dcfEebbe2254/7b1578b98436f737.jpg"},{"id":17,"name":"参数18_文本","desc":"","type":"string","exampleValue":"¥"},{"id":18,"name":"参数19_文本","desc":"","type":"string","exampleValue":"8749.00"},{"id":19,"name":"参数20_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\tApple iPhone 14 Pro (A2892) 256GB 深空黑色 支持移动联通电信5G 双卡双待手机【大王卡】\n\t\t\t\t\t\t\t\t【好物限时购】Apple好物限量特价,限时优惠等你来购~快来抢购吧!\n\t\t\t\t\t\t\t"},{"id":20,"name":"参数21_链接地址","desc":"","type":"string","exampleValue":"//item.jd.com/100038089781.html"},{"id":21,"name":"参数22_文本","desc":"","type":"string","exampleValue":"Apple14Pro(A2892)256GB深空黑色支持移动联通电信5G双卡双待手机【大王卡】"},{"id":22,"name":"参数23_文本","desc":"","type":"string","exampleValue":"iPhone"},{"id":23,"name":"参数24_文本","desc":"","type":"string","exampleValue":"【好物限时购】Apple好物限量特价,限时优惠等你来购~快来抢购吧!"},{"id":24,"name":"参数25_文本","desc":"","type":"string","exampleValue":"条评价"},{"id":25,"name":"参数26_链接文本","desc":"","type":"string","exampleValue":"10万+"},{"id":26,"name":"参数27_链接地址","desc":"","type":"string","exampleValue":"//item.jd.com/100038089781.html#comment"},{"id":27,"name":"参数28_链接文本","desc":"","type":"string","exampleValue":"关注"},{"id":28,"name":"参数29_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":29,"name":"参数30_链接文本","desc":"","type":"string","exampleValue":"中国联通京东自营旗舰店"},{"id":30,"name":"参数31_链接地址","desc":"","type":"string","exampleValue":"//mall.jd.com/index-1000073123.html?from=pc"},{"id":31,"name":"参数32_文本","desc":"","type":"string","exampleValue":"自营"},{"id":32,"name":"参数33_文本","desc":"","type":"string","exampleValue":"券7000-1100"},{"id":33,"name":"参数34_文本","desc":"","type":"string","exampleValue":"赠"},{"id":34,"name":"参数35_文本","desc":"","type":"string","exampleValue":"海外预定"},{"id":35,"name":"参数36_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":36,"name":"参数37_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":37,"name":"参数38_图片地址","desc":"","type":"string","exampleValue":"//img10.360buyimg.com/n7/jfs/t1/211889/13/25653/16750/63ecb0feF255ba96e/bdf29159bc58b8cb.jpg"},{"id":38,"name":"参数39_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":39,"name":"参数40_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":40,"name":"参数41_图片地址","desc":"","type":"string","exampleValue":"//img12.360buyimg.com/n7/jfs/t1/195608/23/33272/24575/64074bbcF2996dcca/45e38aaf1c8b37b3.jpg"},{"id":41,"name":"参数42_文本","desc":"","type":"string","exampleValue":"IPHONE"},{"id":42,"name":"参数43_文本","desc":"","type":"string","exampleValue":"拍拍"},{"id":43,"name":"参数44_图片地址","desc":"","type":"string","exampleValue":"//m.360buyimg.com/cc/jfs/t1/197706/29/27826/4384/63314bc6E21b4c3e9/8b4d5fc44efc5b3f.png"},{"id":44,"name":"参数45_文本","desc":"","type":"string","exampleValue":"预约中"},{"id":45,"name":"参数46_文本","desc":"","type":"string","exampleValue":"剩余17天21时47分"},{"id":46,"name":"参数47_链接文本","desc":"","type":"string","exampleValue":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"},{"id":47,"name":"参数48_链接地址","desc":"","type":"string","exampleValue":"javascript:;"},{"id":48,"name":"参数49_图片地址","desc":"","type":"string","exampleValue":""},{"id":49,"name":"参数50_文本","desc":"","type":"string","exampleValue":"iPhone"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,3,4],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1}},{"id":2,"index":2,"parentId":0,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"key\"]","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"value":"iPhone","allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/input[1]","//input[contains(., '')]","id(\"key\")","//INPUT[@class='text defcolor']","/html/body/div[last()-6]/div/div[last()-2]/div/input"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search-btn\"]/i[1]","wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":"2","scrollCount":2,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"paras":[],"allXPaths":["/html/body/div[4]/div[1]/div[2]/div[1]/button[1]/i[1]","//i[contains(., '')]","/html/body/div[last()-6]/div/div[last()-2]/div/button/i"]}},{"id":4,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[5],"isInLoop":false,"position":3,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/div[2]/ul[1]/li/div[1]","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/div[2]/ul[1]/li[1]/div[1]","//div[contains(., '')]","//DIV[@class='gl-i-wrap']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div"]}},{"id":5,"index":5,"parentId":4,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"paras":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","relativeXPath":"/div[1]/a[1]","allXPaths":["/div[1]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-8]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t\n\t\t\t\t \t"}],"unique_index":"/div[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数2_链接地址","desc":"","relativeXPath":"/div[1]/a[1]","allXPaths":["/div[1]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-8]/a"],"exampleValues":[{"num":0,"value":"//item.jd.com/100038089781.html"}],"unique_index":"/div[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数3_图片地址","desc":"","relativeXPath":"/div[1]/a[1]/img[1]","allXPaths":["/div[1]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-8]/a/img"],"exampleValues":[{"num":0,"value":"//img11.360buyimg.com/n7/jfs/t1/191960/4/28218/17255/63196f11Ee943e61b/ec9d8feadce365fe.jpg"}],"unique_index":"/div[1]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数4_文本","desc":"","relativeXPath":"/div[2]/span[1]","allXPaths":["/div[2]/span[1]","//span[contains(., '<')]","//SPAN[@class='ps-prev']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/span[last()-1]"],"exampleValues":[{"num":0,"value":"<"}],"unique_index":"/div[2]/span[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数5_文本","desc":"","relativeXPath":"/div[2]/span[2]","allXPaths":["/div[2]/span[2]","//span[contains(., '>')]","//SPAN[@class='ps-next']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/span"],"exampleValues":[{"num":0,"value":">"}],"unique_index":"/div[2]/span[2]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数6_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[1]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[1]/a[1]","//a[contains(., '')]","//A[@class='curr']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-3]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数7_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[1]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[1]/a[1]","//a[contains(., '')]","//A[@class='curr']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-3]/a"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数8_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[1]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[1]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-3]/a/img"],"exampleValues":[{"num":0,"value":"//img11.360buyimg.com/n7/jfs/t1/191960/4/28218/17255/63196f11Ee943e61b/ec9d8feadce365fe.jpg"}],"unique_index":"/div[2]/div[1]/ul[1]/li[1]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数9_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[2]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[2]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-2]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[2]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数10_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[2]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[2]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-2]/a"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[2]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数11_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[2]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[2]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-2]/a/img"],"exampleValues":[{"num":0,"value":"//img13.360buyimg.com/n7/jfs/t1/58549/24/22211/18752/63196e79E30ec4e33/5f9ce38bdbacf96c.jpg"}],"unique_index":"/div[2]/div[1]/ul[1]/li[2]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数12_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[3]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[3]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-1]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[3]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数13_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[3]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[3]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-1]/a"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[3]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数14_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[3]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[3]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li[last()-1]/a/img"],"exampleValues":[{"num":0,"value":"//img10.360buyimg.com/n7/jfs/t1/50423/12/21455/19477/6319674cE5de04487/71457158f73abe8f.jpg"}],"unique_index":"/div[2]/div[1]/ul[1]/li[3]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数15_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[4]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[4]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[4]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数16_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[4]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[4]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li/a"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[4]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数17_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[4]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[4]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-7]/div/ul/li/a/img"],"exampleValues":[{"num":0,"value":"//img11.360buyimg.com/n7/jfs/t1/145950/1/30473/21295/63196dcfEebbe2254/7b1578b98436f737.jpg"}],"unique_index":"/div[2]/div[1]/ul[1]/li[4]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数18_文本","desc":"","relativeXPath":"/div[3]/strong[1]/em[1]","allXPaths":["/div[3]/strong[1]/em[1]","//em[contains(., '¥')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-6]/strong/em"],"exampleValues":[{"num":0,"value":"¥"}],"unique_index":"/div[3]/strong[1]/em[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数19_文本","desc":"","relativeXPath":"/div[3]/strong[1]/i[1]","allXPaths":["/div[3]/strong[1]/i[1]","//i[contains(., '8749.00')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-6]/strong/i"],"exampleValues":[{"num":0,"value":"8749.00"}],"unique_index":"/div[3]/strong[1]/i[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数20_链接文本","desc":"","relativeXPath":"/div[4]/a[1]","allXPaths":["/div[4]/a[1]","//a[contains(., 'A')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a"],"exampleValues":[{"num":0,"value":"\n\t\t\t\t\t\t\t\tApple iPhone 14 Pro (A2892) 256GB 深空黑色 支持移动联通电信5G 双卡双待手机【大王卡】\n\t\t\t\t\t\t\t\t【好物限时购】Apple好物限量特价,限时优惠等你来购~快来抢购吧!\n\t\t\t\t\t\t\t"}],"unique_index":"/div[4]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数21_链接地址","desc":"","relativeXPath":"/div[4]/a[1]","allXPaths":["/div[4]/a[1]","//a[contains(., 'A')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a"],"exampleValues":[{"num":0,"value":"//item.jd.com/100038089781.html"}],"unique_index":"/div[4]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数22_文本","desc":"","relativeXPath":"/div[4]/a[1]/em[1]","allXPaths":["/div[4]/a[1]/em[1]","//em[contains(., 'Apple iPho')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a/em"],"exampleValues":[{"num":0,"value":"Apple14Pro(A2892)256GB深空黑色支持移动联通电信5G双卡双待手机【大王卡】"}],"unique_index":"/div[4]/a[1]/em[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数23_文本","desc":"","relativeXPath":"/div[4]/a[1]/em[1]/font[1]","allXPaths":["/div[4]/a[1]/em[1]/font[1]","//font[contains(., 'iPhone')]","//FONT[@class='skcolor_ljg']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a/em/font"],"exampleValues":[{"num":0,"value":"iPhone"}],"unique_index":"/div[4]/a[1]/em[1]/font[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数24_文本","desc":"","relativeXPath":"/div[4]/a[1]/i[1]","allXPaths":["/div[4]/a[1]/i[1]","//i[contains(., '【好物限时购】App')]","id(\"J_AD_100038089781\")","//I[@class='promo-words']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-5]/a/i"],"exampleValues":[{"num":0,"value":"【好物限时购】Apple好物限量特价,限时优惠等你来购~快来抢购吧!"}],"unique_index":"/div[4]/a[1]/i[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数25_文本","desc":"","relativeXPath":"/div[5]/strong[1]","allXPaths":["/div[5]/strong[1]","//strong[contains(., '10万+条评价')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-4]/strong"],"exampleValues":[{"num":0,"value":"条评价"}],"unique_index":"/div[5]/strong[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数26_链接文本","desc":"","relativeXPath":"/div[5]/strong[1]/a[1]","allXPaths":["/div[5]/strong[1]/a[1]","//a[contains(., '10万+')]","id(\"J_comment_100038089781\")","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-4]/strong/a"],"exampleValues":[{"num":0,"value":"10万+"}],"unique_index":"/div[5]/strong[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数27_链接地址","desc":"","relativeXPath":"/div[5]/strong[1]/a[1]","allXPaths":["/div[5]/strong[1]/a[1]","//a[contains(., '10万+')]","id(\"J_comment_100038089781\")","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-4]/strong/a"],"exampleValues":[{"num":0,"value":"//item.jd.com/100038089781.html#comment"}],"unique_index":"/div[5]/strong[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数28_链接文本","desc":"","relativeXPath":"/div[6]/a[1]","allXPaths":["/div[6]/a[1]","//a[contains(., '关注')]","//A[@class='J_focus']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-3]/a"],"exampleValues":[{"num":0,"value":"关注"}],"unique_index":"/div[6]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数29_链接地址","desc":"","relativeXPath":"/div[6]/a[1]","allXPaths":["/div[6]/a[1]","//a[contains(., '关注')]","//A[@class='J_focus']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-3]/a"],"exampleValues":[{"num":0,"value":"javascript:;"}],"unique_index":"/div[6]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数30_链接文本","desc":"","relativeXPath":"/div[7]/span[1]/a[1]","allXPaths":["/div[7]/span[1]/a[1]","//a[contains(., '中国联通京东自营旗舰')]","//A[@class='curr-shop hd-shopname']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-2]/span/a"],"exampleValues":[{"num":0,"value":"中国联通京东自营旗舰店"}],"unique_index":"/div[7]/span[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数31_链接地址","desc":"","relativeXPath":"/div[7]/span[1]/a[1]","allXPaths":["/div[7]/span[1]/a[1]","//a[contains(., '中国联通京东自营旗舰')]","//A[@class='curr-shop hd-shopname']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-2]/span/a"],"exampleValues":[{"num":0,"value":"//mall.jd.com/index-1000073123.html?from=pc"}],"unique_index":"/div[7]/span[1]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数32_文本","desc":"","relativeXPath":"/div[8]/i[1]","allXPaths":["/div[8]/i[1]","//i[contains(., '自营')]","//I[@class='goods-icons J-picon-tips J-picon-fix']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/i[last()-2]"],"exampleValues":[{"num":0,"value":"自营"}],"unique_index":"/div[8]/i[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数33_文本","desc":"","relativeXPath":"/div[8]/i[2]","allXPaths":["/div[8]/i[2]","//i[contains(., '券7000-1100')]","//I[@class='goods-icons4 J-picon-tips']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/i[last()-1]"],"exampleValues":[{"num":0,"value":"券7000-1100"}],"unique_index":"/div[8]/i[2]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数34_文本","desc":"","relativeXPath":"/div[8]/i[3]","allXPaths":["/div[8]/i[3]","//i[contains(., '赠')]","//I[@class='goods-icons4 J-picon-tips']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-29]/div/div[last()-1]/i"],"exampleValues":[{"num":0,"value":"赠"}],"unique_index":"/div[8]/i[3]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数35_文本","desc":"","relativeXPath":"/div[9]","allXPaths":["/div[9]","//div[contains(., '海外预定')]","//DIV[@class='p-stock']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-28]/div/div"],"exampleValues":[{"num":1,"value":"海外预定"}],"unique_index":"/div[9]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数36_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[5]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-26]/div/div[last()-7]/div/ul/li/a"],"exampleValues":[{"num":3,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[5]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数37_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[5]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-26]/div/div[last()-7]/div/ul/li/a"],"exampleValues":[{"num":3,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[5]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数38_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[5]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[5]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-26]/div/div[last()-7]/div/ul/li/a/img"],"exampleValues":[{"num":3,"value":"//img10.360buyimg.com/n7/jfs/t1/211889/13/25653/16750/63ecb0feF255ba96e/bdf29159bc58b8cb.jpg"}],"unique_index":"/div[2]/div[1]/ul[1]/li[5]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数39_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[6]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[6]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-25]/div/div[last()-7]/div/ul/li/a"],"exampleValues":[{"num":4,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[6]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数40_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[6]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[6]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-25]/div/div[last()-7]/div/ul/li/a"],"exampleValues":[{"num":4,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[6]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数41_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[6]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[6]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-25]/div/div[last()-7]/div/ul/li/a/img"],"exampleValues":[{"num":4,"value":"//img12.360buyimg.com/n7/jfs/t1/195608/23/33272/24575/64074bbcF2996dcca/45e38aaf1c8b37b3.jpg"}],"unique_index":"/div[2]/div[1]/ul[1]/li[6]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数42_文本","desc":"","relativeXPath":"/div[4]/a[1]/em[1]/font[2]","allXPaths":["/div[4]/a[1]/em[1]/font[2]","//font[contains(., 'IPHONE')]","//FONT[@class='skcolor_ljg']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-24]/div/div[last()-5]/a/em/font"],"exampleValues":[{"num":5,"value":"IPHONE"}],"unique_index":"/div[4]/a[1]/em[1]/font[2]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数43_文本","desc":"","relativeXPath":"/div[4]/a[1]/em[1]/span[1]","allXPaths":["/div[4]/a[1]/em[1]/span[1]","//span[contains(., '拍拍')]","//SPAN[@class='p-tag']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-23]/div/div[last()-5]/a/em/span"],"exampleValues":[{"num":6,"value":"拍拍"}],"unique_index":"/div[4]/a[1]/em[1]/span[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数44_图片地址","desc":"","relativeXPath":"/div[7]/img[1]","allXPaths":["/div[7]/img[1]","//img[contains(., '')]","//IMG[@class='shop-tag fl']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-23]/div/div[last()-2]/img"],"exampleValues":[{"num":6,"value":"//m.360buyimg.com/cc/jfs/t1/197706/29/27826/4384/63314bc6E21b4c3e9/8b4d5fc44efc5b3f.png"}],"unique_index":"/div[7]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数45_文本","desc":"","relativeXPath":"/div[10]/span[1]","allXPaths":["/div[10]/span[1]","//span[contains(., '预约中')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-18]/div/div/span"],"exampleValues":[{"num":11,"value":"预约中"}],"unique_index":"/div[10]/span[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数46_文本","desc":"","relativeXPath":"/div[10]/em[1]","allXPaths":["/div[10]/em[1]","//em[contains(., '剩余17天21时47')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-18]/div/div/em"],"exampleValues":[{"num":11,"value":"剩余17天21时47分"}],"unique_index":"/div[10]/em[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数47_链接文本","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[7]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[7]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-11]/div/div[last()-8]/div/ul/li/a"],"exampleValues":[{"num":18,"value":"\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t"}],"unique_index":"/div[2]/div[1]/ul[1]/li[7]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数48_链接地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[7]/a[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[7]/a[1]","//a[contains(., '')]","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-11]/div/div[last()-8]/div/ul/li/a"],"exampleValues":[{"num":18,"value":"javascript:;"}],"unique_index":"/div[2]/div[1]/ul[1]/li[7]/a[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数49_图片地址","desc":"","relativeXPath":"/div[2]/div[1]/ul[1]/li[7]/a[1]/img[1]","allXPaths":["/div[2]/div[1]/ul[1]/li[7]/a[1]/img[1]","//img[contains(., '')]","//IMG[@class='err-product']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-11]/div/div[last()-8]/div/ul/li/a/img"],"exampleValues":[{"num":18,"value":""}],"unique_index":"/div[2]/div[1]/ul[1]/li[7]/a[1]/img[1]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数50_文本","desc":"","relativeXPath":"/div[4]/a[1]/em[1]/font[3]","allXPaths":["/div[4]/a[1]/em[1]/font[3]","//font[contains(., 'iPhone')]","//FONT[@class='skcolor_ljg']","/html/body/div[last()-11]/div/div/div[last()-1]/div/div[last()-2]/ul/li[last()-2]/div/div[last()-5]/a/em/font"],"exampleValues":[{"num":27,"value":"iPhone"}],"unique_index":"/div[4]/a[1]/em[1]/font[3]","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/ElectronJS/tasks/114.json b/ElectronJS/tasks/114.json new file mode 100644 index 0000000..08165f5 --- /dev/null +++ b/ElectronJS/tasks/114.json @@ -0,0 +1 @@ +{"id":114,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"7/4/2023, 2:30:54 AM","version":"0.3.5","saveThreshold":10,"cloudflare":0,"environment":0,"containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"string","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_图片地址","desc":"","type":"string","exampleValue":"//m.360buyimg.com/babel/jfs/t1/160456/7/37206/196421/649c09faFeab01f59/cc5ea5b81653b3a5.png"},{"id":1,"name":"参数2_图片地址","desc":"","type":"string","exampleValue":"//m.360buyimg.com/babel/jfs/t1/170360/26/33432/1027/63a97f92Ea57bb36e/0ce5842c29b3c233.png"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2,4],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","wait":0},"isInLoop":false},{"id":1,"index":1,"parentId":0,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":false,"position":0,"parameters":{"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div/div[1]/div[1]/a[1]/img[1]","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-1]/div/div[last()-1]/div/div[last()-1]/div/div[last()-8]/div/div/a/img"]}},{"id":4,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"paras":[{"nodeType":4,"contentType":0,"relative":true,"name":"参数1_图片地址","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"//m.360buyimg.com/babel/jfs/t1/160456/7/37206/196421/649c09faFeab01f59/cc5ea5b81653b3a5.png"}],"unique_index":"qxx8j1eagpljn723fu","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}],"loopType":1}},{"id":3,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[5],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[3]/div[1]/div[6]/ul[1]/li/a[1]/img[1]","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":1,"pathList":"","textList":"","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0,"allXPaths":["/html/body/div[5]/div[1]/div[1]/div[1]/div[3]/div[1]/div[6]/ul[1]/li[1]/a[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-5]/div/div[last()-4]/div/div/div/div[last()-1]/ul/li[last()-4]/a/img"]}},{"id":5,"index":5,"parentId":3,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"paras":[{"nodeType":0,"contentType":7,"relative":true,"name":"参数2_图片地址","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"//m.360buyimg.com/babel/jfs/t1/170360/26/33432/1027/63a97f92Ea57bb36e/0ce5842c29b3c233.png"}],"unique_index":"vynho6ujxoljn72a9h","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}]}}]} \ No newline at end of file diff --git a/ElectronJS/tasks/115.json b/ElectronJS/tasks/115.json new file mode 100644 index 0000000..cce2ec6 --- /dev/null +++ b/ElectronJS/tasks/115.json @@ -0,0 +1,1658 @@ +{ + "id": 115, + "name": "网易云音乐", + "url": "https://music.163.com/#/discover/toplist?id=71384707", + "links": "https://music.163.com/#/discover/toplist?id=71384707", + "create_time": "7/4/2023, 5:06:27 AM", + "version": "0.3.5", + "saveThreshold": 10, + "cloudflare": 0, + "environment": 0, + "containJudge": false, + "desc": "https://music.163.com/#/discover/toplist?id=71384707", + "inputParameters": [ + { + "id": 0, + "name": "urlList_0", + "nodeId": 1, + "nodeName": "打开网页", + "value": "https://music.163.com/#/discover/toplist?id=71384707", + "desc": "要采集的网址列表,多行以\\n分开", + "type": "string", + "exampleValue": "https://music.163.com/#/discover/toplist?id=71384707" + }, + { + "id": 1, + "name": "loopTimes_循环_1", + "nodeId": 3, + "nodeName": "循环", + "desc": "循环循环执行的次数(0代表无限循环)", + "type": "int", + "exampleValue": 0, + "value": 0 + }, + { + "id": 2, + "name": "inputText_2", + "nodeName": "输入文字", + "nodeId": 7, + "desc": "要输入的文本,如京东搜索框输入:电脑", + "type": "string", + "exampleValue": "123", + "value": "123" + } + ], + "outputParameters": [ + { + "id": 0, + "name": "参数73_文本", + "desc": "", + "type": "string", + "exampleValue": "1" + }, + { + "id": 1, + "name": "参数74_文本", + "desc": "", + "type": "string", + "exampleValue": "1" + }, + { + "id": 2, + "name": "参数75_链接文本", + "desc": "", + "type": "string", + "exampleValue": "" + }, + { + "id": 3, + "name": "参数76_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/song?id=1060914" + }, + { + "id": 4, + "name": "参数77_图片地址", + "desc": "", + "type": "string", + "exampleValue": "http://p1.music.126.net/Dvhon4mH7qimTtE7q3omTw==/1419469524716144.jpg?param=50y50&quality=100" + }, + { + "id": 5, + "name": "参数78_链接文本", + "desc": "", + "type": "string", + "exampleValue": "NocturEJpne No. 2 in E Flat Major, Op. 9, No. 2" + }, + { + "id": 6, + "name": "参数79_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/song?id=1060914" + }, + { + "id": 7, + "name": "参数80_文本", + "desc": "", + "type": "string", + "exampleValue": "NocturneNo.2inEFlatMajor,Op.9,No.2" + }, + { + "id": 8, + "name": "参数81_文本", + "desc": "", + "type": "string", + "exampleValue": "EJp" + }, + { + "id": 9, + "name": "参数82_文本", + "desc": "", + "type": "string", + "exampleValue": "-(降E大调第2号夜曲,作品9)" + }, + { + "id": 10, + "name": "参数83_文本", + "desc": "", + "type": "string", + "exampleValue": "函潖奪" + }, + { + "id": 11, + "name": "参数84_文本", + "desc": "", + "type": "string", + "exampleValue": "04:26" + }, + { + "id": 12, + "name": "参数85_链接文本", + "desc": "", + "type": "string", + "exampleValue": "" + }, + { + "id": 13, + "name": "参数86_链接地址", + "desc": "", + "type": "string", + "exampleValue": "javascript:;" + }, + { + "id": 14, + "name": "参数87_文本", + "desc": "", + "type": "string", + "exampleValue": "分享" + }, + { + "id": 15, + "name": "参数88_链接文本", + "desc": "", + "type": "string", + "exampleValue": "Arthur Rubiwf8knstein" + }, + { + "id": 16, + "name": "参数89_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=12541250" + }, + { + "id": 17, + "name": "参数90_文本", + "desc": "", + "type": "string", + "exampleValue": "wf8k" + }, + { + "id": 18, + "name": "参数91_文本", + "desc": "", + "type": "string", + "exampleValue": "NobleMusicProject" + }, + { + "id": 19, + "name": "参数92_文本", + "desc": "", + "type": "string", + "exampleValue": "fXuJ" + }, + { + "id": 20, + "name": "参数93_文本", + "desc": "", + "type": "string", + "exampleValue": "/" + }, + { + "id": 21, + "name": "参数94_链接文本", + "desc": "", + "type": "string", + "exampleValue": "Chris USnelling" + }, + { + "id": 22, + "name": "参数95_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=13065095" + }, + { + "id": 23, + "name": "参数96_文本", + "desc": "", + "type": "string", + "exampleValue": "U" + }, + { + "id": 24, + "name": "参数97_链接文本", + "desc": "", + "type": "string", + "exampleValue": "Eberhard aFJFinke" + }, + { + "id": 25, + "name": "参数98_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=265005" + }, + { + "id": 26, + "name": "参数99_文本", + "desc": "", + "type": "string", + "exampleValue": "aFJ" + }, + { + "id": 27, + "name": "参数100_链接文本", + "desc": "", + "type": "string", + "exampleValue": "Mstip4Uslav Rostropovich" + }, + { + "id": 28, + "name": "参数101_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=155815" + }, + { + "id": 29, + "name": "参数102_文本", + "desc": "", + "type": "string", + "exampleValue": "p4U" + }, + { + "id": 30, + "name": "参数103_文本", + "desc": "", + "type": "string", + "exampleValue": "MV" + }, + { + "id": 31, + "name": "参数104_链接文本", + "desc": "", + "type": "string", + "exampleValue": "AdIUBrpad Gérecz" + }, + { + "id": 32, + "name": "参数105_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=213459" + }, + { + "id": 33, + "name": "参数106_文本", + "desc": "", + "type": "string", + "exampleValue": "dIUB" + }, + { + "id": 34, + "name": "参数107_链接文本", + "desc": "", + "type": "string", + "exampleValue": "New Philharmoniali Orchestra" + }, + { + "id": 35, + "name": "参数108_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=129486" + }, + { + "id": 36, + "name": "参数109_文本", + "desc": "", + "type": "string", + "exampleValue": "li" + }, + { + "id": 37, + "name": "参数110_链接文本", + "desc": "", + "type": "string", + "exampleValue": "Edo de WafczUart" + }, + { + "id": 38, + "name": "参数111_链接地址", + "desc": "", + "type": "string", + "exampleValue": "/artist?id=144817" + }, + { + "id": 39, + "name": "参数112_文本", + "desc": "", + "type": "string", + "exampleValue": "fczU" + } + ], + "graph": [ + { + "index": 0, + "id": 0, + "parentId": 0, + "type": -1, + "option": 0, + "title": "root", + "sequence": [1, 2, 3], + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "wait": 0 + }, + "isInLoop": false + }, + { + "id": 1, + "index": 1, + "parentId": 0, + "type": 0, + "option": 1, + "title": "打开网页", + "sequence": [], + "isInLoop": false, + "position": 0, + "parameters": { + "useLoop": false, + "xpath": "", + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "url": "https://music.163.com/#/discover/toplist?id=71384707", + "links": "https://music.163.com/#/discover/toplist?id=71384707", + "maxWaitTime": 10, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1 + } + }, + { + "id": 2, + "index": 2, + "parentId": 0, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": false, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[contains(@class, \"user\")]", + "iframe": true, + "wait": 2, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": [ + "/html/body/div[3]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]", + "//div[contains(., '最近更新:06月2')]", + "//DIV[@class='user f-cb']", + "/html/body/div[last()-10]/div/div/div[last()-1]/div/div/div/div[last()-1]" + ] + } + }, + { + "id": 3, + "index": 3, + "parentId": 0, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [5, 4], + "isInLoop": false, + "position": 2, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[contains(@class, \"user\")]", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 0, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 0, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[3]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]", + "//div[contains(., '最近更新:06月2')]", + "//DIV[@class='user f-cb']", + "/html/body/div[last()-10]/div/div/div[last()-1]/div/div/div/div[last()-1]" + ] + } + }, + { + "id": 5, + "index": 4, + "parentId": 3, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": true, + "xpath": "//*[contains(@class, \"user\")]", + "iframe": true, + "wait": 2, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": [ + "/html/body/div[3]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]", + "//div[contains(., '最近更新:06月2')]", + "//DIV[@class='user f-cb']", + "/html/body/div[last()-10]/div/div/div[last()-1]/div/div/div/div[last()-1]" + ], + "loopType": 0 + } + }, + { + "id": 4, + "index": 5, + "parentId": 3, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [6, 7, 8], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 1, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 0, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": "" + } + }, + { + "id": 6, + "index": 6, + "parentId": 4, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": true, + "xpath": "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td", + "iframe": true, + "wait": 2, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": "", + "loopType": 1 + } + }, + { + "id": 7, + "index": 7, + "parentId": 4, + "type": 0, + "option": 4, + "title": "输入文字", + "sequence": [], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[@id=\"auto-id-8mWuLxTMrXQaQCra\"]", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "value": "123", + "allXPaths": [ + "/html/body/div[3]/div[2]/div[1]/div[2]/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/textarea[1]", + "//textarea[contains(., '')]", + "id(\"auto-id-8mWuLxTMrXQaQCra\")", + "//TEXTAREA[@class='u-txt area j-flag']", + "/html/body/div[last()-10]/div/div/div/div/div/div/div[last()-2]/div/div/div/div[last()-2]/textarea" + ] + } + }, + { + "id": 8, + "index": 8, + "parentId": 4, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [9], + "isInLoop": true, + "position": 2, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 1, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 0, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]", + "//tr[contains(., '11 NocturE')]", + "id(\"10609141688418212092\")", + "//TR[@class='even js-dis']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]" + ] + } + }, + { + "id": 9, + "index": 9, + "parentId": 8, + "type": 0, + "option": 3, + "title": "提取数据", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "paras": [ + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数73_文本", + "desc": "", + "relativeXPath": "/td[1]/div[1]/span[1]", + "allXPaths": [ + "/td[1]/div[1]/span[1]", + "//span[contains(., '1')]", + "//SPAN[@class='num']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-3]/div/span" + ], + "exampleValues": [{ "num": 0, "value": "1" }], + "unique_index": "/td[1]/div[1]/span[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数74_文本", + "desc": "", + "relativeXPath": "/td[1]/div[1]/div[1]/span[1]", + "allXPaths": [ + "/td[1]/div[1]/div[1]/span[1]", + "//span[contains(., '1')]", + "//SPAN[@class='ico u-icn u-icn-73 s-fc9']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-3]/div/div/span" + ], + "exampleValues": [{ "num": 0, "value": "1" }], + "unique_index": "/td[1]/div[1]/div[1]/span[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数75_链接文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/a[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/a[1]", + "//a[contains(., '')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/a" + ], + "exampleValues": [{ "num": 0, "value": "" }], + "unique_index": "/td[2]/div[1]/div[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数76_链接地址", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/a[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/a[1]", + "//a[contains(., '')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/a" + ], + "exampleValues": [{ "num": 0, "value": "/song?id=1060914" }], + "unique_index": "/td[2]/div[1]/div[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 4, + "contentType": 1, + "relative": true, + "name": "参数77_图片地址", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/a[1]/img[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/a[1]/img[1]", + "//img[contains(., '')]", + "//IMG[@class='rpic']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/a/img" + ], + "exampleValues": [ + { + "num": 0, + "value": "http://p1.music.126.net/Dvhon4mH7qimTtE7q3omTw==/1419469524716144.jpg?param=50y50&quality=100" + } + ], + "unique_index": "/td[2]/div[1]/div[1]/a[1]/img[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数78_链接文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", + "//a[contains(., 'NocturEJpn')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a" + ], + "exampleValues": [ + { + "num": 0, + "value": "NocturEJpne No. 2 in E Flat Major, Op. 9, No. 2" + } + ], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数79_链接地址", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", + "//a[contains(., 'NocturEJpn')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a" + ], + "exampleValues": [{ "num": 0, "value": "/song?id=1060914" }], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数80_文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", + "//b[contains(., 'NocturEJpn')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a/b" + ], + "exampleValues": [ + { "num": 0, "value": "NocturneNo.2inEFlatMajor,Op.9,No.2" } + ], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数81_文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]/div[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]/div[1]", + "//div[contains(., 'EJp')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/a/b/div" + ], + "exampleValues": [{ "num": 0, "value": "EJp" }], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数82_文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]", + "//span[contains(., '- (降E大调第2')]", + "//SPAN[@class='s-fc8']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/span" + ], + "exampleValues": [ + { "num": 0, "value": "-(降E大调第2号夜曲,作品9)" } + ], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数83_文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]/div[1]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]/div[1]", + "//div[contains(., '函潖奪')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-2]/div/div/div/span/span/div" + ], + "exampleValues": [{ "num": 0, "value": "函潖奪" }], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[1]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数84_文本", + "desc": "", + "relativeXPath": "/td[3]/span[1]", + "allXPaths": [ + "/td[3]/span[1]", + "//span[contains(., '04:26')]", + "//SPAN[@class='u-dur ']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/span" + ], + "exampleValues": [{ "num": 0, "value": "04:26" }], + "unique_index": "/td[3]/span[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数85_链接文本", + "desc": "", + "relativeXPath": "/td[3]/div[1]/a[1]", + "allXPaths": [ + "/td[3]/div[1]/a[1]", + "//a[contains(., '')]", + "//A[@class='u-icn u-icn-81 icn-add']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/div/a" + ], + "exampleValues": [{ "num": 0, "value": "" }], + "unique_index": "/td[3]/div[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数86_链接地址", + "desc": "", + "relativeXPath": "/td[3]/div[1]/a[1]", + "allXPaths": [ + "/td[3]/div[1]/a[1]", + "//a[contains(., '')]", + "//A[@class='u-icn u-icn-81 icn-add']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/div/a" + ], + "exampleValues": [{ "num": 0, "value": "javascript:;" }], + "unique_index": "/td[3]/div[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数87_文本", + "desc": "", + "relativeXPath": "/td[3]/div[1]/span[2]", + "allXPaths": [ + "/td[3]/div[1]/span[2]", + "//span[contains(., '分享')]", + "//SPAN[@class='icn icn-share']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td[last()-1]/div/span[last()-1]" + ], + "exampleValues": [{ "num": 0, "value": "分享" }], + "unique_index": "/td[3]/div[1]/span[2]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数88_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[1]", + "//a[contains(., 'Arthur Rub')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td/div/span/a" + ], + "exampleValues": [{ "num": 0, "value": "Arthur Rubiwf8knstein" }], + "unique_index": "/td[4]/div[1]/span[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数89_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[1]", + "//a[contains(., 'Arthur Rub')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td/div/span/a" + ], + "exampleValues": [{ "num": 0, "value": "/artist?id=12541250" }], + "unique_index": "/td[4]/div[1]/span[1]/a[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数90_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[1]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[1]/div[1]", + "//div[contains(., 'wf8k')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-99]/td/div/span/a/div" + ], + "exampleValues": [{ "num": 0, "value": "wf8k" }], + "unique_index": "/td[4]/div[1]/span[1]/a[1]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数91_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/span[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/span[1]", + "//span[contains(., 'Noble Musi')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-97]/td/div/span/span" + ], + "exampleValues": [{ "num": 2, "value": "NobleMusicProject" }], + "unique_index": "/td[4]/div[1]/span[1]/span[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数92_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/span[1]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/span[1]/div[1]", + "//div[contains(., 'fXuJ')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-97]/td/div/span/span/div" + ], + "exampleValues": [{ "num": 2, "value": "fXuJ" }], + "unique_index": "/td[4]/div[1]/span[1]/span[1]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数93_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]", + "//span[contains(., 'JohaNOfnn')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span" + ], + "exampleValues": [{ "num": 12, "value": "/" }], + "unique_index": "/td[4]/div[1]/span[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数94_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[2]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[2]", + "//a[contains(., 'Chris USne')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span/a" + ], + "exampleValues": [{ "num": 12, "value": "Chris USnelling" }], + "unique_index": "/td[4]/div[1]/span[1]/a[2]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数95_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[2]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[2]", + "//a[contains(., 'Chris USne')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span/a" + ], + "exampleValues": [{ "num": 12, "value": "/artist?id=13065095" }], + "unique_index": "/td[4]/div[1]/span[1]/a[2]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数96_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[2]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[2]/div[1]", + "//div[contains(., 'U')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-87]/td/div/span/a/div" + ], + "exampleValues": [{ "num": 12, "value": "U" }], + "unique_index": "/td[4]/div[1]/span[1]/a[2]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数97_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[3]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[3]", + "//a[contains(., 'Eberhard a')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a[last()-1]" + ], + "exampleValues": [{ "num": 18, "value": "Eberhard aFJFinke" }], + "unique_index": "/td[4]/div[1]/span[1]/a[3]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数98_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[3]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[3]", + "//a[contains(., 'Eberhard a')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a[last()-1]" + ], + "exampleValues": [{ "num": 18, "value": "/artist?id=265005" }], + "unique_index": "/td[4]/div[1]/span[1]/a[3]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数99_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[3]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[3]/div[1]", + "//div[contains(., 'aFJ')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a[last()-1]/div" + ], + "exampleValues": [{ "num": 18, "value": "aFJ" }], + "unique_index": "/td[4]/div[1]/span[1]/a[3]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数100_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[4]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[4]", + "//a[contains(., 'Mstip4Usla')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a" + ], + "exampleValues": [ + { "num": 18, "value": "Mstip4Uslav Rostropovich" } + ], + "unique_index": "/td[4]/div[1]/span[1]/a[4]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数101_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[4]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[4]", + "//a[contains(., 'Mstip4Usla')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a" + ], + "exampleValues": [{ "num": 18, "value": "/artist?id=155815" }], + "unique_index": "/td[4]/div[1]/span[1]/a[4]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数102_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[4]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[4]/div[1]", + "//div[contains(., 'p4U')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-81]/td/div/span/a/div" + ], + "exampleValues": [{ "num": 18, "value": "p4U" }], + "unique_index": "/td[4]/div[1]/span[1]/a[4]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数103_文本", + "desc": "", + "relativeXPath": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[2]", + "allXPaths": [ + "/td[2]/div[1]/div[1]/div[1]/span[1]/span[2]", + "//span[contains(., 'MV')]", + "//SPAN[@class='mv']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-62]/td[last()-2]/div/div/div/span/span" + ], + "exampleValues": [{ "num": 37, "value": "MV" }], + "unique_index": "/td[2]/div[1]/div[1]/div[1]/span[1]/span[2]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数104_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[5]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[5]", + "//a[contains(., 'AdIUBrpad')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-2]" + ], + "exampleValues": [{ "num": 81, "value": "AdIUBrpad Gérecz" }], + "unique_index": "/td[4]/div[1]/span[1]/a[5]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数105_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[5]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[5]", + "//a[contains(., 'AdIUBrpad')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-2]" + ], + "exampleValues": [{ "num": 81, "value": "/artist?id=213459" }], + "unique_index": "/td[4]/div[1]/span[1]/a[5]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数106_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[5]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[5]/div[1]", + "//div[contains(., 'dIUB')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-2]/div" + ], + "exampleValues": [{ "num": 81, "value": "dIUB" }], + "unique_index": "/td[4]/div[1]/span[1]/a[5]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数107_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[6]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[6]", + "//a[contains(., 'New Philha')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-1]" + ], + "exampleValues": [ + { "num": 81, "value": "New Philharmoniali Orchestra" } + ], + "unique_index": "/td[4]/div[1]/span[1]/a[6]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数108_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[6]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[6]", + "//a[contains(., 'New Philha')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-1]" + ], + "exampleValues": [{ "num": 81, "value": "/artist?id=129486" }], + "unique_index": "/td[4]/div[1]/span[1]/a[6]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数109_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[6]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[6]/div[1]", + "//div[contains(., 'li')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a[last()-1]/div" + ], + "exampleValues": [{ "num": 81, "value": "li" }], + "unique_index": "/td[4]/div[1]/span[1]/a[6]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": true, + "name": "参数110_链接文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[7]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[7]", + "//a[contains(., 'Edo de Waf')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a" + ], + "exampleValues": [{ "num": 81, "value": "Edo de WafczUart" }], + "unique_index": "/td[4]/div[1]/span[1]/a[7]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 2, + "contentType": 0, + "relative": true, + "name": "参数111_链接地址", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[7]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[7]", + "//a[contains(., 'Edo de Waf')]", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a" + ], + "exampleValues": [{ "num": 81, "value": "/artist?id=144817" }], + "unique_index": "/td[4]/div[1]/span[1]/a[7]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 1, + "relative": true, + "name": "参数112_文本", + "desc": "", + "relativeXPath": "/td[4]/div[1]/span[1]/a[7]/div[1]", + "allXPaths": [ + "/td[4]/div[1]/span[1]/a[7]/div[1]", + "//div[contains(., 'fczU')]", + "//DIV[@class='soil']", + "/html/body/div[last()-10]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-18]/td/div/span/a/div" + ], + "exampleValues": [{ "num": 81, "value": "fczU" }], + "unique_index": "/td[4]/div[1]/span[1]/a[7]/div[1]", + "iframe": true, + "default": "", + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ] + } + } + ] +} diff --git a/ExecuteStage/.vscode/launch.json b/ExecuteStage/.vscode/launch.json index ba489fc..8972abb 100644 --- a/ExecuteStage/.vscode/launch.json +++ b/ExecuteStage/.vscode/launch.json @@ -10,7 +10,8 @@ "program": "${file}", "console": "integratedTerminal", "justMyCode": true, - "args": ["--id", "[1]", "--read_type", "remote", "--headless", "0"] + "args": ["--id", "[5]", "--read_type", "remote", "--headless", "0"] + // "args": ["--id", "[2]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"] // "args": ["--id", "[44]", "--headless", "0", "--user_data", "1"] } ] diff --git a/ExecuteStage/easyspider_executestage.py b/ExecuteStage/easyspider_executestage.py index 8466237..4d77ec6 100644 --- a/ExecuteStage/easyspider_executestage.py +++ b/ExecuteStage/easyspider_executestage.py @@ -39,85 +39,11 @@ import pytesseract from PIL import Image import uuid from threading import Thread, Event + +from utils import check_pause, download_image, get_output_code, isnull desired_capabilities = DesiredCapabilities.CHROME desired_capabilities["pageLoadStrategy"] = "none" -# 控制流程的暂停和继续 - - -def check_pause(key, event): - while True: - if keyboard.is_pressed(key): # 按下p键,暂停程序 - if event._flag == False: - print("任务执行中,长按p键暂停执行。") - print("Task is running, long press 'p' to pause.") - # 设置Event的值为True,使得线程b可以继续执行 - event.set() - else: - # 设置Event的值为False,使得线程b暂停执行 - print("任务已暂停,长按p键继续执行...") - print("Task paused, press 'p' to continue...") - event.clear() - time.sleep(1) # 每秒检查一次 - - -def download_image(url, save_directory): - # 定义浏览器头信息 - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' - } - - # 发送 GET 请求获取图片数据 - response = requests.get(url, headers=headers) - - # 检查响应状态码是否为成功状态 - if response.status_code == requests.codes.ok: - # 提取文件名 - file_name = url.split('/')[-1].split("?")[0] - - # 生成唯一的新文件名 - new_file_name = file_name + '_' + str(uuid.uuid4()) + '_' + file_name - - # 构建保存路径 - save_path = os.path.join(save_directory, new_file_name) - - # 保存图片到本地 - with open(save_path, 'wb') as file: - file.write(response.content) - - print("图片已成功下载到:", save_path) - print("The image has been successfully downloaded to:", save_path) - else: - print("下载图片失败,请检查此图片链接是否有效:", url) - print("Failed to download image, please check if this image link is valid:", url) - - -def get_output_code(output): - try: - if output.find("rue") != -1: # 如果返回值中包含true - code = 1 - else: - code = int(output) - except: - code = 0 - return code - -# 判断字段是否为空 - - -def isnull(s): - return len(s) != 0 - - -class Time: - def __init__(self, type1=""): - self.t = int(round(time.time() * 1000)) - self.type = type1 - - def end(self): - at = int(round(time.time() * 1000)) - print("Time used for", self.type, ":", at - self.t, "ms") - class BrowserThread(Thread): def __init__(self, browser_t, id, service, version, event): @@ -170,13 +96,14 @@ class BrowserThread(Thread): self.log = "" # 记下现在总共开了多少个标签页 self.history = {"index": 0, "handle": None} # 记录页面现在所以在的历史记录的位置 self.SAVED = False # 记录是否已经存储了 - if not os.path.exists("Data/" + str(self.id) + "/" + self.saveName + '.csv'): # 文件叠加的时候不添加表头 + # 文件叠加的时候不添加表头 + if not os.path.exists("Data/Task_" + str(self.id) + "/" + self.saveName + '.csv'): self.OUTPUT.append([]) # 添加表头 for para in tOut: if para["name"] not in self.outputParameters.keys(): self.outputParameters[para["name"]] = "" self.dataNotFoundKeys[para["name"]] = False - if not os.path.exists("Data/" + str(self.id) + "/" + self.saveName + '.csv'): + if not os.path.exists("Data/Task_" + str(self.id) + "/" + self.saveName + '.csv'): self.OUTPUT[0].append(para["name"]) self.urlId = 0 # 全局记录变量 self.preprocess() # 预处理,优化提取数据流程 @@ -197,10 +124,10 @@ class BrowserThread(Thread): for i in range(len(self.links)): self.executeNode(0) self.urlId = self.urlId + 1 - files = os.listdir("Data/" + str(self.id) + "/" + self.saveName) + files = os.listdir("Data/Task_" + str(self.id) + "/" + self.saveName) # 如果目录为空,则删除该目录 if not files: - os.rmdir("Data/" + str(self.id) + "/" + self.saveName) + os.rmdir("Data/Task_" + str(self.id) + "/" + self.saveName) print("Done!") print("执行完成!") self.recordLog("Done!") @@ -225,10 +152,10 @@ class BrowserThread(Thread): def saveData(self, exit=False): # 每save_threshold条保存一次 if exit == True or len(self.OUTPUT) >= self.save_threshold: - with open("Data/" + str(self.id) + "/" + self.saveName + '_log.txt', 'a', encoding='utf-8-sig') as file_obj: + with open("Data/Task_" + str(self.id) + "/" + self.saveName + '_log.txt', 'a', encoding='utf-8-sig') as file_obj: file_obj.write(self.log) file_obj.close() - with open("Data/" + str(self.id) + "/" + self.saveName + '.csv', 'a', encoding='utf-8-sig', newline="") as f: + with open("Data/Task_" + str(self.id) + "/" + self.saveName + '.csv', 'a', encoding='utf-8-sig', newline="") as f: f_csv = csv.writer(f) for line in self.OUTPUT: f_csv.writerow(line) @@ -250,8 +177,8 @@ class BrowserThread(Thread): body.send_keys(Keys.END) time.sleep(para["scrollWaitTime"]) # 下拉完等待 except: - self.Log('time out after set seconds when scrolling. ') - self.recordLog('time out after set seconds when scrolling') + self.Log('Time out after set seconds when scrolling. ') + self.recordLog('Time out after set seconds when scrolling') self.browser.execute_script('window.stop()') if scrollType != 0 and para["scrollCount"] > 0: # 控制屏幕向下滚动 for i in range(para["scrollCount"]): @@ -535,8 +462,8 @@ class BrowserThread(Thread): self.executeNode( i, element, node["parameters"]["xpath"], 0) finished = True - self.Log("click: ", node["parameters"]["xpath"]) - self.recordLog("click:" + node["parameters"]["xpath"]) + self.Log("Click: ", node["parameters"]["xpath"]) + self.recordLog("Click:" + node["parameters"]["xpath"]) except NoSuchElementException: # except: print("Single loop element not found: ", @@ -555,7 +482,7 @@ class BrowserThread(Thread): print("\n\n-------Retrying-------\n\n") self.Log("-------Retrying-------: ", node["parameters"]["xpath"]) - self.recordLog("clickNotFound:" + + self.recordLog("ClickNotFound:" + node["parameters"]["xpath"]) for i in node["sequence"]: # 不带点击元素的把剩余的如提取数据的操作执行一遍 if node["option"] != 2: @@ -747,9 +674,9 @@ class BrowserThread(Thread): self.Log('Loading page: ' + url) self.recordLog('Loading page: ' + url) except TimeoutException: - self.Log('time out after set seconds when loading page: ' + url) + self.Log('Time out after set seconds when loading page: ' + url) self.recordLog( - 'time out after set seconds when loading page: ' + url) + 'Time out after set seconds when loading page: ' + url) self.browser.execute_script('window.stop()') try: self.history["index"] = self.browser.execute_script( @@ -867,9 +794,9 @@ class BrowserThread(Thread): '`, document, null, XPathResult.ANY_TYPE, null);for(let i=0;i 0) { return 'Windows' @@ -34,20 +42,24 @@ export function getOS () { } export function getElementXPaths(element, parentElement = document.body) { - const paths = []; + let paths = []; + let pre_xpath = ""; + // if(global.iframe){ + // pre_xpath = "//iframe"; + // } paths.push(readXPath(element,1, parentElement)); - paths.push("//" + element.tagName.toLowerCase() + "[contains(., '" + element.textContent.slice(0, 10).trim() + "')]"); + paths.push(pre_xpath + "//" + element.tagName.toLowerCase() + "[contains(., '" + element.textContent.slice(0, 10).trim() + "')]"); if (element.id) { - paths.push(`id("${element.id}")`); + paths.push(pre_xpath + `id("${element.id}")`); } if (element.className) { - paths.push("//" + element.tagName + "[@class='" + element.className + "']"); + paths.push(pre_xpath + "//" + element.tagName + "[@class='" + element.className + "']"); } if (element.name) { - paths.push("//" + element.tagName + "[@name='" + element.name + "']"); + paths.push(pre_xpath + "//" + element.tagName + "[@name='" + element.name + "']"); } if (element.alt) { - paths.push("//" + element.tagName + "[@alt='" + element.alt + "']"); + paths.push(pre_xpath + "//" + element.tagName + "[@alt='" + element.alt + "']"); } paths.push(getAbsoluteXPathWithReverseIndex(element)); console.log("ALL PATHS: " + paths); @@ -55,10 +67,14 @@ export function getElementXPaths(element, parentElement = document.body) { } function getAbsoluteXPathWithReverseIndex(element) { - var path = []; + let pre_xpath = ""; + // if(global.iframe){ + // pre_xpath = "//iframe"; + // } + let path = []; while (element && element.nodeType == Node.ELEMENT_NODE) { - var index = 0; - for (var sibling = element.nextSibling; sibling; sibling = sibling.nextSibling) { + let index = 0; + for (let sibling = element.nextSibling; sibling; sibling = sibling.nextSibling) { // Ignore document type declaration. if (sibling.nodeType == Node.DOCUMENT_TYPE_NODE) continue; @@ -66,22 +82,26 @@ function getAbsoluteXPathWithReverseIndex(element) { ++index; } - var tagName = element.nodeName.toLowerCase(); - var pathIndex = (index ? "[last()-" + index + "]" : ""); + let tagName = element.nodeName.toLowerCase(); + let pathIndex = (index ? "[last()-" + index + "]" : ""); path.unshift(tagName + pathIndex); element = element.parentNode; } - return "/" + path.join("/"); + return pre_xpath + "/" + path.join("/"); } //返回element相对node节点的xpath,默认的node节点是: / export function readXPath(element, type = 1, node = document.body) { + let pre_xpath = ""; + // if(global.iframe){ + // pre_xpath = "//iframe"; + // } try { if (type == 0) //type=0代表默认可通过id生成xpath type=1代表只能从根节点生成xpath, nodeList里必须使用绝对xpath! { if (element.id !== "") { //判断id属性,如果这个元素有id,则显示//*[@id="xPath"] 形式内容 - return '//*[@id=\"' + element.id + '\"]'; + return pre_xpath + '//*[@id=\"' + element.id + '\"]'; } if (element.className != ""){ //如果有class且某个class name只有一个元素,则使用class name生成xpath console.log("class name: " + element.className); @@ -89,11 +109,11 @@ export function readXPath(element, type = 1, node = document.body) { for (let i = 0; i < names.length; i++) { if (names[i] != "") { // return '//*[@class=\"' + names[i] + '\"]'; - console.log('//*[@contains(@class, \"' + names[i] + '\")]'); + // console.log('//*[@contains(@class, \"' + names[i] + '\")]'); let elements_of_class = node.getElementsByClassName(names[i]); - console.log("Length of elements_of_class: " + elements_of_class.length); + // console.log("Length of elements_of_class: " + elements_of_class.length); if(elements_of_class.length == 1){ - return '//*[contains(@class, \"' + names[i] + '\")]' + return pre_xpath + '//*[contains(@class, \"' + names[i] + '\")]' } } } @@ -102,9 +122,9 @@ export function readXPath(element, type = 1, node = document.body) { //这里需要需要主要字符串转译问题,可参考js 动态生成html时字符串和变量转译(注意引号的作用) if (element == node) { //递归到body处,结束递归 if (node == document.body) { - return '/html/' + element.tagName.toLowerCase(); + return pre_xpath + '/html/' + element.tagName.toLowerCase(); } else { - return ""; + return ""; } } let ix = 1, //在nodelist中的位置,且每次点击初始化 @@ -124,7 +144,7 @@ export function readXPath(element, type = 1, node = document.body) { } } } catch { - return "/" + return pre_xpath + "/" } } @@ -370,6 +390,7 @@ export function generateParameters(type, linktext = true, linkhref = true) { "allXPaths": global.nodeList.length > 1 ? "" : ndAllXPaths, "exampleValues": [{ "num": num, "value": ndText }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "A") { //如果元素是超链接 if (linktext) { @@ -384,6 +405,7 @@ export function generateParameters(type, linktext = true, linkhref = true) { "allXPaths": global.nodeList.length > 1 ? "" : ndAllXPaths, "exampleValues": [{ "num": num, "value": ndText }], "unique_index": unique_index, + "iframe": global.iframe, }); } if (linkhref) { @@ -397,6 +419,7 @@ export function generateParameters(type, linktext = true, linkhref = true) { "allXPaths": global.nodeList.length > 1 ? "" : ndAllXPaths, "exampleValues": [{ "num": num, "value": nd.getAttribute("href") == null ? "" : nd.getAttribute("href") }], "unique_index": unique_index, + "iframe": global.iframe, }); } } else if (nd.tagName == "INPUT") { //如果元素是输入项 @@ -411,6 +434,7 @@ export function generateParameters(type, linktext = true, linkhref = true) { "allXPaths": global.nodeList.length > 1 ? "" : ndAllXPaths, "exampleValues": [{ "num": num, "value": ndText }], "unique_index": unique_index, + "iframe": global.iframe, }); } else { //其他所有情况 global.outputParameters.push({ @@ -424,6 +448,7 @@ export function generateParameters(type, linktext = true, linkhref = true) { "allXPaths": global.nodeList.length > 1 ? "" : ndAllXPaths, "exampleValues": [{ "num": num, "value": ndText }], "unique_index": unique_index, + "iframe": global.iframe, }); } } else { //如果元素节点已经存在,则只需要插入值就可以了 @@ -477,6 +502,7 @@ export function generateMultiParameters() { "allXPaths": ndAllXPaths, "exampleValues": [{ "num": 0, "value": nd.getAttribute("src") == null ? "" : nd.getAttribute("src") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "A") { //如果元素是超链接 global.outputParameters.push({ @@ -489,6 +515,7 @@ export function generateMultiParameters() { "allXPaths": ndAllXPaths, "exampleValues": [{ "num": 0, "value": ndText }], "unique_index": unique_index, + "iframe": global.iframe, }); global.outputParameters.push({ "nodeType": 2, @@ -500,6 +527,7 @@ export function generateMultiParameters() { "allXPaths": ndAllXPaths, "exampleValues": [{ "num": 0, "value": nd.getAttribute("href") == null ? "" : nd.getAttribute("href") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "INPUT") { //如果元素是输入项 global.outputParameters.push({ @@ -512,6 +540,7 @@ export function generateMultiParameters() { "allXPaths": ndAllXPaths, "exampleValues": [{ "num": 0, "value": nd.getAttribute("value") == null ? "" : nd.getAttribute("value") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else { //其他所有情况 global.outputParameters.push({ @@ -524,6 +553,7 @@ export function generateMultiParameters() { "allXPaths": ndAllXPaths, "exampleValues": [{ "num": 0, "value": ndText }], "unique_index": unique_index, + "iframe": global.iframe, }); } } @@ -633,6 +663,7 @@ export function handleDescendents(mode = 0) { "value": nd.getAttribute("src") == null ? "" : nd.getAttribute("src") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "A") { //如果元素是超链接 global.outputParameters.push({ @@ -645,6 +676,7 @@ export function handleDescendents(mode = 0) { "allXPaths": global.nodeList.length > 1 ? ndAllPaths : getElementXPaths(nd), "exampleValues": [{"num": num, "value": nd.textContent}], //注意这里的ndtext是整个a的文字!!! "unique_index": unique_index, + "iframe": global.iframe, }); global.outputParameters.push({ "nodeType": 2, @@ -659,6 +691,7 @@ export function handleDescendents(mode = 0) { "value": nd.getAttribute("href") == null ? "" : nd.getAttribute("href") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "INPUT") { //如果元素是输入项 global.outputParameters.push({ @@ -674,6 +707,7 @@ export function handleDescendents(mode = 0) { "value": nd.getAttribute("value") == null ? "" : nd.getAttribute("value") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else { //其他所有情况 global.outputParameters.push({ @@ -686,6 +720,7 @@ export function handleDescendents(mode = 0) { "allXPaths": global.nodeList.length > 1 ? ndAllPaths : getElementXPaths(nd), "exampleValues": [{"num": num, "value": ndText}], "unique_index": unique_index, + "iframe": global.iframe, }); } } @@ -789,6 +824,7 @@ export function handleDescendents(mode = 0) { "value": nd.getAttribute("src") == null ? "" : nd.getAttribute("src") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "A") { //如果元素是超链接 global.outputParameters.push({ @@ -801,6 +837,7 @@ export function handleDescendents(mode = 0) { "allXPaths": global.nodeList.length > 1 ? ndAllPaths : getElementXPaths(nd), "exampleValues": [{"num": num, "value": nd.textContent}], //注意这里的ndtext是整个a的文字!!! "unique_index": unique_index, + "iframe": global.iframe, }); global.outputParameters.push({ "nodeType": 2, @@ -815,6 +852,7 @@ export function handleDescendents(mode = 0) { "value": nd.getAttribute("href") == null ? "" : nd.getAttribute("href") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else if (nd.tagName == "INPUT") { //如果元素是输入项 global.outputParameters.push({ @@ -830,6 +868,7 @@ export function handleDescendents(mode = 0) { "value": nd.getAttribute("value") == null ? "" : nd.getAttribute("value") }], "unique_index": unique_index, + "iframe": global.iframe, }); } else { //其他所有情况 global.outputParameters.push({ @@ -842,6 +881,7 @@ export function handleDescendents(mode = 0) { "allXPaths": global.nodeList.length > 1 ? ndAllPaths : getElementXPaths(nd), "exampleValues": [{"num": num, "value": ndText}], "unique_index": unique_index, + "iframe": global.iframe, }); } } @@ -884,24 +924,24 @@ export function handleDescendents(mode = 0) { //根据参数列表生成可视化参数界面 export function generateValTable(multiline = true) { - let paravalues = []; + let paraValues = []; for (let i = 0; i < global.outputParameters.length; i++) { - let tvalues = []; + let tValues = []; let tindex = 0; let l = multiline ? global.nodeList.length : 1; for (let j = 0; j < l; j++) { //注意第一个循环条件,index超出界限了就不需要再寻找了,其他的全是空 if (tindex < global.outputParameters[i]["exampleValues"].length && global.outputParameters[i]["exampleValues"][tindex]["num"] == j) { - tvalues.push(global.outputParameters[i]["exampleValues"][tindex]["value"]); + tValues.push(global.outputParameters[i]["exampleValues"][tindex]["value"]); tindex++; } else { - tvalues.push(" "); + tValues.push(" "); } } - paravalues.push(tvalues); + paraValues.push(tValues); } - global.app._data.valTable = paravalues; - console.log("生成参数表格", paravalues); + global.app._data.valTable = paraValues; + console.log("生成参数表格", paraValues); } // 选中第一个节点,自动寻找同类节点 @@ -911,7 +951,7 @@ export function generateValTable(multiline = true) { // 直到找到第一个变多的节点或者追溯到根节点为止 export function findRelated() { let at = parseInt(new Date().getTime()); - let testPath = global.nodeList[0]["xpath"].split("/").splice(1); //分离xpath成 ["html","body","div[0]"]这样子 + let testPath = global.nodeList[0]["xpath"].replace("//iframe","").split("/").splice(1); //分离xpath成 ["html","body","div[0]"]这样子 let nodeNameList = []; let nodeIndexList = []; for (let i = 0; i < testPath.length; i++) { @@ -1004,7 +1044,7 @@ export function relatedTest() { let testpath = ""; for (let i = 0; i < global.nodeList.length; i++) { let testnumList = []; //用于比较节点索引号不同 - let tpath = global.nodeList[i]["xpath"].split("/").splice(1); //清理第一个空元素 + let tpath = global.nodeList[i]["xpath"].replace("//iframe","").split("/").splice(1); //清理第一个空元素 for (let j = 0; j < tpath.length; j++) { if (tpath[j].indexOf("[") >= 0) { //如果存在索引值 testnumList.push(parseInt(tpath[j].split("[")[1].replace("]", ""))); //只留下数字 @@ -1042,4 +1082,4 @@ export function relatedTest() { let at2 = parseInt(new Date().getTime()); console.log("手动:", at2, at, at2 - at); return 50; //先返回给默认码 -} \ No newline at end of file +} diff --git a/Extension/manifest_v3/src/content-scripts/main.js b/Extension/manifest_v3/src/content-scripts/main.js index de4818e..a753be8 100644 --- a/Extension/manifest_v3/src/content-scripts/main.js +++ b/Extension/manifest_v3/src/content-scripts/main.js @@ -4,13 +4,6 @@ import {global, getOS, readXPath, addEl, clearEl, clearReady, handleElement, cle import ToolKit from "./toolkit.vue"; import iframe from "./iframe.vue"; -function isInIframe() { - try { - return window.self !== window.parent; - } catch (e) { - return true; - } -} //表现逻辑层的处理 @@ -43,11 +36,11 @@ var mousemovebind = false; //如果出现元素默认绑定了mousemove事件导 var toolkit = document.createElement("div"); toolkit.classList = "tooltips"; //添加样式 // @ts-ignore -if(isInIframe()){ - toolkit.setAttribute("id", "wrapperToolkitIframe"); -} else { - toolkit.setAttribute("id", "wrapperToolkit"); -} +// if(isInIframe()){ +// toolkit.setAttribute("id", "wrapperToolkitIframe"); +// } else { +toolkit.setAttribute("id", "wrapperToolkit"); +// } var tooltips = false; //标记鼠标是否在提示框上 @@ -115,8 +108,9 @@ document.addEventListener("mousemove", function() { } else { try { global.oe.style.backgroundColor = global.defaultbgColor; //设置新元素的背景元素 - } catch {} + } catch { + } } global.xnode = global.oe; global.div.style.display = "none"; @@ -188,11 +182,11 @@ function generateToolkit() { $(".tooltips").html(`
`); - if(isInIframe()){ - global.app = new Vue(iframe); - } else{ - global.app = new Vue(ToolKit); - } + // if(isInIframe()){ + // global.app = new Vue(iframe); + // } else{ + global.app = new Vue(ToolKit); + // } let h = $(".tooldrag").height(); let difference = 26 - h; //获得高度值差 diff --git a/Extension/manifest_v3/src/content-scripts/messageInteraction.js b/Extension/manifest_v3/src/content-scripts/messageInteraction.js index 41b70aa..f161910 100644 --- a/Extension/manifest_v3/src/content-scripts/messageInteraction.js +++ b/Extension/manifest_v3/src/content-scripts/messageInteraction.js @@ -1,6 +1,6 @@ //实现与后台和流程图部分的交互 -import {getElementXPaths, global, readXPath} from "./global.js"; +import {getElementXPaths, global, readXPath, isInIframe} from "./global.js"; // var startMsg = { "type": 0, msg: ""}; // @@ -36,6 +36,7 @@ export function input(value) { "tabIndex": -1, "xpath": readXPath(global.nodeList[0]["node"], 0), "allXPaths": getElementXPaths(global.nodeList[0]["node"]), + "iframe": global.iframe, "value": value, }; window.stop(); @@ -48,7 +49,7 @@ export function input(value) { // msg = { type: 2, value: value, xpath: message.xpath, id: global.id}; let message_keyboard = { type: 2, //消息类型,2代表键盘输入 - message: { "keyboardStr": value, "xpath": message.xpath, "id": global.id } // {}全选{BS}退格 + message: { "keyboardStr": value, "xpath": message.xpath, "iframe": global.iframe, "id": global.id } // {}全选{BS}退格 }; global.ws.send(JSON.stringify(message_keyboard)); } @@ -61,6 +62,7 @@ export function sendSingleClick() { "history": history.length, //记录history的长度 "tabIndex": -1, "useLoop": false, //是否使用循环内元素 + "iframe": global.iframe, "xpath": readXPath(global.nodeList[0]["node"], 0), "allXPaths": getElementXPaths(global.nodeList[0]["node"]), }; @@ -80,6 +82,7 @@ export function sendChangeOption(optionMode, optionValue){ "history": history.length, //记录history的长度 "tabIndex": -1, "useLoop": false, //是否使用循环内元素 + "iframe": global.iframe, "xpath": readXPath(global.nodeList[0]["node"], 0), "allXPaths": getElementXPaths(global.nodeList[0]["node"]), }; @@ -97,6 +100,7 @@ export function sendMouseMove(){ "history": history.length, //记录history的长度 "tabIndex": -1, "useLoop": false, //是否使用循环内元素 + "iframe": global.iframe, "xpath": readXPath(global.nodeList[0]["node"], 0), "allXPaths": getElementXPaths(global.nodeList[0]["node"]), }; @@ -116,6 +120,7 @@ export function sendLoopMouseMove(){ "xpath": "", //默认值设置为空 "allXPaths": "", "useLoop": true, //是否使用循环内元素 + "iframe": global.iframe, "loopType": 1, //循环类型,1为不固定元素列表 }; if (!detectAllSelected()) //如果不是全部选中的话 @@ -145,6 +150,7 @@ export function collectSingle() { "type": "singleCollect", "history": history.length, //记录history的长度 "tabIndex": -1, + "iframe": global.iframe, "parameters": global.outputParameters, }; let message_action = { @@ -161,6 +167,7 @@ export function collectMultiNoPattern() { "type": "multiCollectNoPattern", "history": history.length, //记录history的长度 "tabIndex": -1, + "iframe": global.iframe, "parameters": global.outputParameters, }; let message_action = { @@ -179,6 +186,7 @@ export function collectMultiWithPattern() { "history": history.length, //记录history的长度 "tabIndex": -1, "loopType": 1, + "iframe": global.iframe, "xpath": "", //默认值设置为空 "allXPaths": "", "isDescendents": global.app._data.selectedDescendents, //标记是否采集的是子元素 @@ -216,6 +224,7 @@ export function sendLoopClickSingle(name) { "history": history.length, //记录history的长度 "tabIndex": -1, "useLoop": true, //是否使用循环内元素 + "iframe": global.iframe, "xpath": readXPath(global.nodeList[0]["node"], 0), "allXPaths": getElementXPaths(global.nodeList[0]["node"]), "loopType": 0, //循环类型,0为单个元素 @@ -242,6 +251,7 @@ export function sendLoopClickEvery() { "xpath": "", //默认值设置为空 "allXPaths": "", "useLoop": true, //是否使用循环内元素 + "iframe": global.iframe, "loopType": 1, //循环类型,1为不固定元素列表 }; if (!detectAllSelected()) //如果不是全部选中的话 @@ -284,4 +294,4 @@ export function detectAllSelected() { return false; } } -} \ No newline at end of file +} diff --git a/Extension/manifest_v3/src/content-scripts/toolkit.vue b/Extension/manifest_v3/src/content-scripts/toolkit.vue index 030783d..8793229 100644 --- a/Extension/manifest_v3/src/content-scripts/toolkit.vue +++ b/Extension/manifest_v3/src/content-scripts/toolkit.vue @@ -132,7 +132,7 @@
- 如果点击“确定”按钮后文本框没有自动填充,且流程图中没有显示“输入文字”节点,重试即可。 + 输入<enter>或<ENTER>表示输入完成后模拟按下回车键,适用于只能通过回车键获得数据的情况。
@@ -292,7 +292,7 @@
- If the text box does not auto-populate after clicking the "Confirm" button, and the "Input Text" operation is not displayed in the workflow manager, please try again. + Inputting <enter> or <ENTER> represents the simulation of pressing the Enter key after input is complete, which is applicable in situations where data can only be obtained through pressing the Enter key.
@@ -322,6 +322,7 @@