From 80850c7328091bd996b59607de872a48c807c759 Mon Sep 17 00:00:00 2001 From: Naibo Wang Date: Sun, 24 Dec 2023 01:15:28 +0800 Subject: [PATCH] Linux ddddocr --- .../Code/easyspider_executestage.py | 2050 ++++++++--- .temp_to_pub/EasySpider_Linux_x64/myCode.py | 58 + .../EasySpider_Linux_x64/tasks/115.json | 3060 +++++------------ .../EasySpider_Linux_x64/tasks/149.json | 2 +- .../EasySpider_Linux_x64/tasks/205.json | 2 +- .../EasySpider_Linux_x64/tasks/209.json | 2 +- .../EasySpider_Linux_x64/tasks/210.json | 338 +- .../EasySpider_Linux_x64/tasks/215.json | 2 +- .../EasySpider_Linux_x64/tasks/221.json | 890 +---- .../EasySpider_Linux_x64/tasks/237.json | 2 +- .../EasySpider_Linux_x64/tasks/95.json | 2 +- ElectronJS/EasySpider_en.crx | Bin 211370 -> 0 bytes ElectronJS/EasySpider_zh.crx | Bin 211371 -> 0 bytes ElectronJS/package_linux64.sh | 2 +- ExecuteStage/generateExecutable_Linux64.sh | 2 +- 15 files changed, 2737 insertions(+), 3675 deletions(-) create mode 100644 .temp_to_pub/EasySpider_Linux_x64/myCode.py delete mode 100644 ElectronJS/EasySpider_en.crx delete mode 100644 ElectronJS/EasySpider_zh.crx diff --git a/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py b/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py index 3f86c22..4ce4a48 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py +++ b/.temp_to_pub/EasySpider_Linux_x64/Code/easyspider_executestage.py @@ -1,5 +1,36 @@ # -*- coding: utf-8 -*- # import atexit +import atexit +import copy +import platform +import shutil +import string +# import undetected_chromedriver as uc +from utils import detect_optimizable, download_image, extract_text_from_html, get_output_code, isnotnull, lowercase_tags_in_xpath, myMySQL, new_line, \ + on_press_creator, on_release_creator, readCode, replace_field_values, send_email, split_text_by_lines, write_to_csv, write_to_excel, write_to_json +from myChrome import MyChrome +from threading import Thread, Event +from PIL import Image +from commandline_config import Config +import os +import csv +from openpyxl import load_workbook, Workbook +import random +from selenium.webdriver import ActionChains +from selenium.webdriver.support.ui import Select +from selenium.webdriver.common.desired_capabilities import DesiredCapabilities +from selenium.common.exceptions import StaleElementReferenceException, InvalidSelectorException +from selenium.common.exceptions import TimeoutException +from selenium.common.exceptions import NoSuchElementException +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait +from selenium import webdriver +from selenium.webdriver.common.action_chains import ActionChains +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.chrome.service import Service +from pynput.keyboard import Key, Listener from datetime import datetime import io # 遇到错误退出时应执行的代码 import json @@ -13,45 +44,46 @@ import sys # import hashlib import time import requests +from multiprocessing import freeze_support +freeze_support() # 防止无限死循环多开 +try: + from ddddocr import DdddOcr + import onnxruntime + onnxruntime.set_default_logger_severity(3) # 隐藏onnxruntime的日志 +except: + print("OCR识别无法在当前环境下使用(ddddocr库缺失),请使用完整版执行器easyspider_executestage_full来运行需要OCR识别的任务。") + print("OCR recognition cannot be used in the current environment (ddddocr library is missing), please use the executor with ddddocr 'easyspider_executestage_full' to run the task which requires OCR recognition.") from urllib.parse import urljoin -from lxml import etree -import undetected_chromedriver as uc -from pynput.keyboard import Key, Listener -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.action_chains import ActionChains -from selenium import webdriver -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC -from selenium.webdriver.common.by import By -from selenium.common.exceptions import NoSuchElementException -from selenium.common.exceptions import TimeoutException -from selenium.common.exceptions import StaleElementReferenceException, InvalidSelectorException -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities -from selenium.webdriver.support.ui import Select -from selenium.webdriver import ActionChains -from selenium.webdriver.common.by import By -import random -# import pandas as pd -from openpyxl import load_workbook, Workbook +from lxml import etree, html +try: + import pandas as pd +except: + print("数据去重无法在当前环境下使用(pandas库缺失),请使用完整版执行器easyspider_executestage_full来运行需要去重的任务。") + print("Data deduplication cannot be used in the current environment (pandas library is missing), please use the executor with pandas 'easyspider_executestage_full' to run the task which requires data deduplication.") + time.sleep(1) + # import numpy -import csv -import os -from commandline_config import Config -import pytesseract -from PIL import Image +# import pytesseract # import uuid -from threading import Thread, Event -from myChrome import MyChrome, MyUCChrome -from utils import check_pause, download_image, get_output_code, isnull, lowercase_tags_in_xpath, myMySQL, new_line, on_press_creator, on_release_creator, write_to_csv, write_to_excel +if sys.platform != "darwin": + from myChrome import MyUCChrome desired_capabilities = DesiredCapabilities.CHROME desired_capabilities["pageLoadStrategy"] = "none" + class BrowserThread(Thread): - def __init__(self, browser_t, id, service, version, event, saveName, config): + def __init__(self, browser_t, id, service, version, event, saveName, config, option): Thread.__init__(self) + self.logs = io.StringIO() + try: + self.log = bool(service["recordLog"]) + except: + self.log = True self.browser = browser_t + self.option = option self.config = config + self.version = version + self.totalSteps = 0 self.id = id self.event = event try: @@ -60,32 +92,63 @@ class BrowserThread(Thread): now = datetime.now() # 将时间格式化为精确到秒的字符串 self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S") - self.log = "" self.OUTPUT = "" self.SAVED = False self.BREAK = False + self.CONTINUE = False + try: + maximizeWindow = service["maximizeWindow"] + except: + maximizeWindow = 0 + if maximizeWindow == 1: + self.browser.maximize_window() # 名称设定 - if saveName != "": # 命令行覆盖保存名称 + if saveName != "": # 命令行覆盖保存名称 self.saveName = saveName # 保存文件的名字 now = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") self.saveName = self.saveName.replace("current_time", now) - print("Save Name for task ID", i, "is:", self.saveName) - print("任务ID", i, "的保存文件名为:", self.saveName) - if not os.path.exists("Data/Task_" + str(i)): - os.mkdir("Data/Task_" + str(i)) - if not os.path.exists("Data/Task_" + str(i) + "/" + self.saveName): - os.mkdir("Data/Task_" + str(i) + "/" + self.saveName) # 创建保存文件夹用来保存截图 - + self.print_and_log("任务ID", id, "的保存文件名为:", self.saveName) + self.print_and_log("Save Name for task ID", id, "is:", self.saveName) + if not os.path.exists("Data/Task_" + str(id)): + os.mkdir("Data/Task_" + str(id)) + if not os.path.exists("Data/Task_" + str(id) + "/" + self.saveName): + os.mkdir("Data/Task_" + str(id) + "/" + + self.saveName) # 创建保存文件夹用来保存截图 + self.getDataStep = 0 + self.startSteps = 0 + try: + startFromExit = service["startFromExit"] # 从上次退出的步骤开始 + if startFromExit == 1: + with open("Data/Task_" + str(self.id) + "/" + self.saveName + '_steps.txt', 'r', + encoding='utf-8-sig') as file_obj: + self.startSteps = int(file_obj.read()) # 读取已执行步数 + except: + pass + if self.startSteps != 0: + self.print_and_log("此模式下,任务ID", self.id, "将从上次退出的步骤开始执行,之前已采集条数为", + self.startSteps, "条。") + self.print_and_log("In this mode, task ID", self.id, + "will start from the last step, before we already collected", self.startSteps, " items.") + else: + self.print_and_log("此模式下,任务ID", self.id, + "将从头F开始执行,如果需要从上次退出的步骤开始执行,请在保存任务时设置是否从上次保存位置开始执行为“是”。") + self.print_and_log("In this mode, task ID", self.id, + "will start from the beginning, if you want to start from the last step, please set the option 'start from the last step' to 'yes' when saving the task.") stealth_path = driver_path[:driver_path.find( "chromedriver")] + "stealth.min.js" with open(stealth_path, 'r') as f: js = f.read() - print("Loading stealth.min.js") + self.print_and_log("Loading stealth.min.js") self.browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { - 'source': js}) # TMALL 反扒 + 'source': js}) # TMALL 反扒 WebDriverWait(self.browser, 10) - self.browser.get('about:blank') + self.browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') + path = os.path.join(os.path.abspath("./"), "Data", "Task_" + str(self.id)) + self.paramss = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': path}} + + self.browser.execute("send_command", self.paramss) # 下载地址改变 + # self.browser.get('about:blank') self.procedure = service["graph"] # 程序执行流程 try: self.maxViewLength = service["maxViewLength"] # 最大显示长度 @@ -96,59 +159,68 @@ class BrowserThread(Thread): except: self.outputFormat = "csv" try: + self.task_version = service["version"] # 任务版本 if service["version"] >= "0.3.1": # 0.3.1及以上版本以上的EasySpider兼容从0.3.1版本开始的所有版本 pass else: # 0.3.1以下版本的EasySpider不兼容0.3.1及以上版本的EasySpider if service["version"] != version: - print("版本不一致,请使用" + - service["version"] + "版本的EasySpider运行该任务!") - print("Version not match, please use EasySpider " + - service["version"] + " to run this task!") + self.print_and_log("版本不一致,请使用" + + service["version"] + "版本的EasySpider运行该任务!") + self.print_and_log("Version not match, please use EasySpider " + + service["version"] + " to run this task!") self.browser.quit() sys.exit() except: # 0.2.0版本没有version字段,所以直接退出 - print("版本不一致,请使用v0.2.0版本的EasySpider运行该任务!") - print("Version not match, please use EasySpider v0.2.0 to run this task!") + self.print_and_log("版本不一致,请使用v0.2.0版本的EasySpider运行该任务!") + self.print_and_log( + "Version not match, please use EasySpider v0.2.0 to run this task!") self.browser.quit() sys.exit() try: self.save_threshold = service["saveThreshold"] # 保存最低阈值 except: self.save_threshold = 10 - self.links = list( - filter(isnull, service["links"].split("\n"))) # 要执行的link的列表 + try: + self.links = list( + filter(isnotnull, service["links"].split("\n"))) # 要执行的link的列表 + except: + self.links = list(filter(isnotnull, service["url"])) # 要执行的link self.OUTPUT = [] # 采集的数据 + try: + self.dataWriteMode = service["dataWriteMode"] # 数据写入模式,1为追加,2为覆盖 + except: + self.dataWriteMode = 1 + if self.outputFormat == "csv" or self.outputFormat == "txt" or self.outputFormat == "xlsx" or self.outputFormat == "json": + if self.dataWriteMode == 2 and os.path.exists("Data/Task_" + str(self.id) + "/" + self.saveName + '.' + self.outputFormat): + os.remove("Data/Task_" + str(self.id) + "/" + self.saveName + '.' + self.outputFormat) self.writeMode = 1 # 写入模式,0为新建,1为追加 - if self.outputFormat == "csv" or self.outputFormat == "txt": + if self.outputFormat == "csv" or self.outputFormat == "txt" or self.outputFormat == "xlsx": if not os.path.exists("Data/Task_" + str(self.id) + "/" + self.saveName + '.' + self.outputFormat): self.OUTPUT.append([]) # 添加表头 self.writeMode = 0 - elif self.outputFormat == "xlsx": - if not os.path.exists("Data/Task_" + str(self.id) + "/" + self.saveName + '.xlsx'): - self.OUTPUT.append([]) # 添加表头 - self.writeMode = 0 + elif self.outputFormat == "json": + self.writeMode = 3 # JSON模式无需判断是否存在文件 elif self.outputFormat == "mysql": self.mysql = myMySQL(config["mysql_config_path"]) - self.mysql.create_table(self.saveName, service["outputParameters"]) + self.mysql.create_table(self.saveName, service["outputParameters"], remove_if_exists=self.dataWriteMode == 2) self.writeMode = 2 - if self.writeMode == 1: - print("追加模式") - print("Append Mode") - elif self.writeMode == 0: - print("新建模式") - print("New Mode") + if self.writeMode == 0: + self.print_and_log("新建模式|Create Mode") + elif self.writeMode == 1: + self.print_and_log("追加模式|Append Mode") elif self.writeMode == 2: - print("MySQL模式") - print("MySQL Mode") + self.print_and_log("MySQL模式|MySQL Mode") + elif self.writeMode == 3: + self.print_and_log("JSON模式|JSON Mode") self.containJudge = service["containJudge"] # 是否含有判断语句 self.outputParameters = {} + self.service = service self.outputParametersTypes = [] - self.outputParametersRecord = [] # 字段是否被记录 + self.outputParametersRecord = [] # 字段是否被记录 self.dataNotFoundKeys = {} # 记录没有找到数据的key - self.log = "" # 记下现在总共开了多少个标签页 self.history = {"index": 0, "handle": None} # 记录页面现在所以在的历史记录的位置 self.SAVED = False # 记录是否已经存储了 - for param in service["outputParameters"]: # 初始化输出参数 + for param in service["outputParameters"]: # 初始化输出参数 if param["name"] not in self.outputParameters.keys(): self.outputParameters[param["name"]] = "" self.dataNotFoundKeys[param["name"]] = False @@ -157,7 +229,8 @@ class BrowserThread(Thread): except: self.outputParametersTypes.append("text") try: - self.outputParametersRecord.append(bool(param["recordASField"])) + self.outputParametersRecord.append( + bool(param["recordASField"])) except: self.outputParametersRecord.append(True) # 文件叠加的时候不添加表头 @@ -166,6 +239,11 @@ class BrowserThread(Thread): self.OUTPUT[0].append(param["name"]) self.urlId = 0 # 全局记录变量 self.preprocess() # 预处理,优化提取数据流程 + try: + self.inputExcel = service["inputExcel"] # 输入Excel + except: + self.inputExcel = "" + self.readFromExcel() # 读取Excel获得参数值 # 检测如果没有复杂的操作,优化提取数据流程 def preprocess(self): @@ -174,18 +252,50 @@ class BrowserThread(Thread): iframe = node["parameters"]["iframe"] except: node["parameters"]["iframe"] = False + try: node["parameters"]["xpath"] = lowercase_tags_in_xpath( node["parameters"]["xpath"]) except: pass + try: + node["parameters"]["waitElementIframeIndex"] = int( + node["parameters"]["waitElementIframeIndex"]) + except: + node["parameters"]["waitElement"] = "" + node["parameters"]["waitElementTime"] = 10 + node["parameters"]["waitElementIframeIndex"] = 0 if node["option"] == 1: # 打开网页操作 try: cookies = node["parameters"]["cookies"] except: node["parameters"]["cookies"] = "" - if node["option"] == 3: # 提取数据操作 - params = node["parameters"]["params"] + elif node["option"] == 2: # 点击操作 + try: + alertHandleType = node["parameters"]["alertHandleType"] + except: + node["parameters"]["alertHandleType"] = 0 + if node["parameters"]["useLoop"]: + if self.task_version <= "0.3.5": + # 0.3.5及以下版本的EasySpider下的循环点击不支持相对XPath + node["parameters"]["xpath"] = "" + self.print_and_log("您的任务版本号为" + self.task_version + + ",循环点击不支持相对XPath写法,已自动切换为纯循环的XPath") + elif node["option"] == 3: # 提取数据操作 + node["parameters"]["recordASField"] = 0 + try: + params = node["parameters"]["params"] + except: + node["parameters"]["params"] = node["parameters"]["paras"] # 兼容0.5.0及以下版本的EasySpider + params = node["parameters"]["params"] + try: + clear = node["parameters"]["clear"] + except: + node["parameters"]["clear"] = 0 + try: + newLine = node["parameters"]["newLine"] + except: + node["parameters"]["newLine"] = 1 for param in params: try: iframe = param["iframe"] @@ -195,66 +305,300 @@ class BrowserThread(Thread): param["relativeXPath"] = lowercase_tags_in_xpath(param["relativeXPath"]) except: pass - if param["beforeJS"] == "" and param["afterJS"] == "" and param["contentType"] <= 1 and param["nodeType"] <= 2: - param["optimizable"] = True + try: + node["parameters"]["recordASField"] = param["recordASField"] + except: + node["parameters"]["recordASField"] = 1 + try: + splitLine = int(param["splitLine"]) + except: + param["splitLine"] = 0 + if param["contentType"] == 8: + self.print_and_log( + "默认的ddddocr识别功能如果觉得不好用,可以自行修改源码get_content函数->contentType == 8的位置换成自己想要的OCR模型然后自己编译运行;或者可以先设置采集内容类型为“元素截图”把图片保存下来,然后用自定义操作调用自己写的程序,程序的功能是读取这个最新生成的图片,然后用好用的模型,如PaddleOCR把图片识别出来,然后把返回值返回给程序作为参数输出。") + self.print_and_log( + "If you think the default ddddocr function is not good enough, you can modify the source code get_content function -> contentType == 8 position to your own OCR model and then compile and run it; or you can first set the content type of the crawler to \"Element Screenshot\" to save the picture, and then call your own program with custom operations. The function of the program is to read the latest generated picture, then use a good model, such as PaddleOCR to recognize the picture, and then return the return value as a parameter output to the program.") + param["optimizable"] = detect_optimizable(param) + elif node["option"] == 4: # 输入文字 + try: + index = node["parameters"]["index"] # 索引值 + except: + node["parameters"]["index"] = 0 + elif node["option"] == 5: # 自定义操作 + try: + clear = node["parameters"]["clear"] + except: + node["parameters"]["clear"] = 0 + try: + newLine = node["parameters"]["newLine"] + except: + node["parameters"]["newLine"] = 1 + elif node["option"] == 7: # 移动到元素 + if node["parameters"]["useLoop"]: + if self.task_version <= "0.3.5": + # 0.3.5及以下版本的EasySpider下的循环点击不支持相对XPath + node["parameters"]["xpath"] = "" + self.print_and_log("您的任务版本号为" + self.task_version + + ",循环点击不支持相对XPath写法,已自动切换为纯循环的XPath") + elif node["option"] == 8: # 循环操作 + try: + exitElement = node["parameters"]["exitElement"] + if exitElement == "": + node["parameters"]["exitElement"] = "//body" + except: + node["parameters"]["exitElement"] = "//body" + node["parameters"]["quickExtractable"] = False # 是否可以快速提取 + try: + skipCount = node["parameters"]["skipCount"] + except: + node["parameters"]["skipCount"] = 0 + # 如果(不)固定元素列表循环中只有一个提取数据操作,且提取数据操作的提取内容为元素截图,那么可以快速提取 + if len(node["sequence"]) == 1 and self.procedure[node["sequence"][0]]["option"] == 3 and (int(node["parameters"]["loopType"]) == 1 or int(node["parameters"]["loopType"]) == 2): + try: + params = self.procedure[node["sequence"][0]]["parameters"]["params"] + except: + params = self.procedure[node["sequence"][0]]["parameters"]["paras"] # 兼容0.5.0及以下版本的EasySpider + try: + waitElement = self.procedure[node["sequence"][0]]["parameters"]["waitElement"] + except: + waitElement = "" + if node["parameters"]["iframe"]: + node["parameters"]["quickExtractable"] = False # 如果是iframe,那么不可以快速提取 else: - param["optimizable"] = False + node["parameters"]["quickExtractable"] = True # 先假设可以快速提取 + if node["parameters"]["skipCount"] > 0: + node["parameters"]["quickExtractable"] = False # 如果有跳过的元素,那么不可以快速提取 + for param in params: + optimizable = detect_optimizable(param, ignoreWaitElement=False, waitElement=waitElement) + try: + iframe = param["iframe"] + except: + param["iframe"] = False + if param["iframe"] and not param["relative"]: # 如果是iframe,那么不可以快速提取 + optimizable = False + if not optimizable: # 如果有一个不满足优化条件,那么就不能快速提取 + node["parameters"]["quickExtractable"] = False + break + if node["parameters"]["quickExtractable"]: + self.print_and_log("循环操作<" + node["title"] + ">可以快速提取数据") + self.print_and_log("Loop operation <" + node["title"] + "> can extract data quickly") + try: + node["parameters"]["clear"] = self.procedure[node["sequence"][0]]["parameters"]["clear"] + except: + node["parameters"]["clear"] = 0 + try: + node["parameters"]["newLine"] = self.procedure[node["sequence"][0]]["parameters"]["newLine"] + except: + node["parameters"]["newLine"] = 1 + if int(node["parameters"]["loopType"]) == 1: # 不固定元素列表 + node["parameters"]["baseXPath"] = node["parameters"]["xpath"] + elif int(node["parameters"]["loopType"]) == 2: # 固定元素列表 + node["parameters"]["baseXPath"] = node["parameters"]["pathList"] + node["parameters"]["quickParams"] = [] + for param in params: + content_type = "" + if param["relativeXPath"].find("/@href") >= 0 or param["relativeXPath"].find("/text()") >= 0 or param["relativeXPath"].find( + "::text()") >= 0: + content_type = "" + elif param["nodeType"] == 2: + content_type = "//@href" + elif param["nodeType"] == 4: # 图片链接 + content_type = "//@src" + elif param["contentType"] == 1: + content_type = "/text()" + elif param["contentType"] == 0: + content_type = "//text()" + if param["relative"]: # 如果是相对XPath + xpath = "." + param["relativeXPath"] + content_type + else: + xpath = param["relativeXPath"] + content_type + # 如果是id()或(//div)[1]这种形式,不需要包/html/body + # if xpath.find("/body") < 0 and xpath.startswith("/"): + # xpath = "/html/body" + xpath + node["parameters"]["quickParams"].append({ + "name": param["name"], + "relative": param["relative"], + "xpath": xpath, + "nodeType": param["nodeType"], + "default": param["default"], + }) + self.print_and_log("预处理完成|Preprocess completed") + + def readFromExcel(self): + if self.inputExcel == "": + return 0 + try: + workbook = load_workbook(self.inputExcel) + except: + self.print_and_log("读取Excel失败,将会使用默认参数执行任务,请检查文件路径是否正确:", + os.path.abspath(self.inputExcel)) + self.print_and_log( + "Failed to read Excel, will execute the task with default parameters, please check if the file path is correct: ", + os.path.abspath(self.inputExcel)) + time.sleep(5) + return 0 + + sheet_name_list = workbook.sheetnames + sheet = workbook[sheet_name_list[0]] + data = [] + + for row in sheet.iter_rows(values_only=True): + data.append(list(row)) + + result = list(zip(*data)) + result_dict = {} + for row in result: + key = row[0] + values = [str(val) for val in row[1:] if val is not None] + result_dict.setdefault(key, []).extend([values]) + + data = {} + for key, arr in result_dict.items(): + result = [] + for cols in zip(*arr): + result.append("~".join(cols)) + data[key] = result + + try: + if "urlList_0" in data.keys(): + self.links = data["urlList_0"] + except: + self.links = "about:blank" + task = self.service + for key, value in data.items(): + for i in range(len(task["inputParameters"])): + if key == task["inputParameters"][i]["name"]: + nodeId = int(task["inputParameters"][i]["nodeId"]) + node = task["graph"][nodeId] + value = "\r\n".join(value) + if node["option"] == 1: + node["parameters"]["links"] = value + elif node["option"] == 4: + node["parameters"]["value"] = value + elif node["option"] == 8 and node["parameters"]["loopType"] == 0: + node["parameters"]["exitCount"] = int(value) + elif node["option"] == 8: + node["parameters"]["textList"] = value + break + self.print_and_log("已从Excel读取输入参数,覆盖了原有输入参数。") + self.print_and_log( + "Already read input parameters from Excel and overwrite the original input parameters.") + + def removeDuplicateData(self): + try: + removeDuplicateData = self.service["removeDuplicate"] + except: + removeDuplicateData = 0 + if removeDuplicateData == 1: + self.print_and_log("正在去除重复数据,请稍后……") + self.print_and_log("Removing duplicate data, please wait...") + if self.outputFormat == "csv" or self.outputFormat == "txt" or self.outputFormat == "json" or self.outputFormat == "xlsx": + file_name = "Data/Task_" + \ + str(self.id) + "/" + self.saveName + \ + '.' + self.outputFormat + if self.outputFormat == "csv" or self.outputFormat == "txt": + df = pd.read_csv(file_name) + df.drop_duplicates(inplace=True) + df.to_csv(file_name, index=False) + elif self.outputFormat == "xlsx": + df = pd.read_excel(file_name) + df.drop_duplicates(inplace=True) + df.to_excel(file_name, index=False) + elif self.outputFormat == "json": + df = pd.read_json(file_name) + df.drop_duplicates(inplace=True) + df.to_json(file_name, orient="records", force_ascii=False) + elif self.outputFormat == "mysql": + self.mysql.remove_duplicate_data() + self.print_and_log("去重完成。") + self.print_and_log("Duplicate data removed.") def run(self): # 挨个执行程序 for i in range(len(self.links)): - print("正在执行第", i + 1, "/ ", len(self.links), "个链接") - print("Executing link", i + 1, "/ ", len(self.links)) + self.print_and_log("正在执行第", i + 1, "/", len(self.links), "个链接") + self.print_and_log("Executing link", i + 1, + "/", len(self.links)) self.executeNode(0) self.urlId = self.urlId + 1 files = os.listdir("Data/Task_" + str(self.id) + "/" + self.saveName) # 如果目录为空,则删除该目录 - if not files: - os.rmdir("Data/Task_" + str(self.id) + "/" + self.saveName) - print("Done!") - print("执行完成!") - self.recordLog("Done!") + # if not files: + # os.rmdir("Data/Task_" + str(self.id) + "/" + self.saveName) + self.print_and_log("Done!") + self.print_and_log("执行完成!") self.saveData(exit=True) + self.removeDuplicateData() if self.outputFormat == "mysql": self.mysql.close() + try: + quitWaitTime = self.service["quitWaitTime"] + except: + quitWaitTime = 60 + self.print_and_log(f"任务执行完毕,将在{quitWaitTime}秒后自动退出浏览器并清理临时用户目录,等待时间可在保存任务对话框中设置。") + self.print_and_log(f"The task is completed, the browser will exit automatically and the temporary user directory will be cleaned up after {quitWaitTime} seconds, the waiting time can be set in the save task dialog.") + time.sleep(quitWaitTime) + self.browser.quit() + self.print_and_log("正在清理临时用户目录……|Cleaning up temporary user directory...") + try: + shutil.rmtree(self.option["tmp_user_data_folder"]) + except: + pass + self.print_and_log("清理完成!|Clean up completed!") + self.print_and_log("您现在可以安全的关闭此窗口了。|You can safely close this window now.") + + def recordLog(self, *args, **kwargs): + now = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") + print(now + ":", *args, file=self.logs, **kwargs) - def recordLog(self, str=""): - self.log = self.log + str + "\n" + # 定义一个自定义的 print 函数,它将内容同时打印到屏幕和文件中 + def print_and_log(self, *args, **kwargs): + now = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") + # 将内容打印到屏幕 + print(*args, **kwargs) - # 控制台打印log函数 - - def Log(self, text, text2=""): - switch = False - if switch: - print(text, text2) - - # @atexit.register - # def clean(self): - # self.saveData(exit=True) - # self.browser.quit() - # sys.exit(0) + # 将内容写入文件 + print(now + ":", *args, file=self.logs, **kwargs) def saveData(self, exit=False): # 每save_threshold条保存一次 if exit == True or len(self.OUTPUT) >= self.save_threshold: # 写入日志 - with open("Data/Task_" + str(self.id) + "/" + self.saveName + '_log.txt', 'a', encoding='utf-8-sig') as file_obj: - file_obj.write(self.log) + # self.recordLog("持久化存储数据/Persistently store data") + if self.log: + with open("Data/Task_" + str(self.id) + "/" + self.saveName + '.log', 'a', + encoding='utf-8-sig') as file_obj: + file_obj.write(self.logs.getvalue()) + file_obj.close() + # 写入已执行步数 + with open("Data/Task_" + str(self.id) + "/" + self.saveName + '_steps.txt', 'w', + encoding='utf-8-sig') as file_obj: + file_obj.write(str(self.totalSteps + 1)) file_obj.close() # 写入数据 if self.outputFormat == "csv" or self.outputFormat == "txt": file_name = "Data/Task_" + \ - str(self.id) + "/" + self.saveName + '.' + self.outputFormat - write_to_csv(file_name, self.OUTPUT, self.outputParametersRecord) + str(self.id) + "/" + self.saveName + \ + '.' + self.outputFormat + write_to_csv(file_name, self.OUTPUT, + self.outputParametersRecord) elif self.outputFormat == "xlsx": file_name = "Data/Task_" + \ - str(self.id) + "/" + self.saveName + '.xlsx' - write_to_excel(file_name, self.OUTPUT, self.outputParametersTypes, self.outputParametersRecord) + str(self.id) + "/" + self.saveName + '.xlsx' + write_to_excel( + file_name, self.OUTPUT, self.outputParametersTypes, self.outputParametersRecord) + elif self.outputFormat == "json": + file_name = "Data/Task_" + \ + str(self.id) + "/" + self.saveName + '.json' + write_to_json(file_name, self.OUTPUT, self.outputParametersTypes, + self.outputParametersRecord, self.outputParameters.keys()) elif self.outputFormat == "mysql": - self.mysql.write_to_mysql(self.OUTPUT, self.outputParametersRecord, self.outputParametersTypes) - + self.mysql.write_to_mysql( + self.OUTPUT, self.outputParametersRecord, self.outputParametersTypes) + self.OUTPUT = [] - self.log = "" + self.logs.truncate(0) # 清空日志 + self.logs.seek(0) # 清空日志 def scrollDown(self, param, rt=""): try: @@ -263,36 +607,116 @@ class BrowserThread(Thread): pass scrollType = int(param["scrollType"]) try: - if scrollType != 0 and param["scrollCount"] > 0: # 控制屏幕向下滚动 - for i in range(param["scrollCount"]): - self.Log("Wait for set second after screen scrolling") - body = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=param["iframe"]) - if scrollType == 1: - body.send_keys(Keys.PAGE_DOWN) - elif scrollType == 2: - body.send_keys(Keys.END) - try: - time.sleep(param["scrollWaitTime"]) # 下拉完等待 - except: - pass + param["scrollCount"] = int(param["scrollCount"]) except: - self.Log('Time out after set seconds when scrolling. ') - self.recordLog('Time out after set seconds when scrolling') - self.browser.execute_script('window.stop()') + param["scrollCount"] = 1 + try: if scrollType != 0 and param["scrollCount"] > 0: # 控制屏幕向下滚动 - for i in range(param["scrollCount"]): - self.Log("Wait for set second after screen scrolling") - body = self.browser.find_element( - By.CSS_SELECTOR, "body", iframe=param["iframe"]) - if scrollType == 1: - body.send_keys(Keys.PGDN) - elif scrollType == 2: + if scrollType == 1 or scrollType == 2: + for i in range(param["scrollCount"]): + body = self.browser.find_element( + By.CSS_SELECTOR, "body", iframe=param["iframe"]) + if scrollType == 1: + body.send_keys(Keys.PAGE_DOWN) + elif scrollType == 2: + body.send_keys(Keys.END) + try: + time.sleep(param["scrollWaitTime"]) # 下拉完等待 + except: + pass + self.print_and_log("向下滚动,第", i + 1, "次。") + self.print_and_log( + "Scroll down, the", i + 1, "time.") + elif scrollType == 3: + bodyText = "" + i = 0 + while True: + newBodyText = self.browser.find_element( + By.CSS_SELECTOR, "body", iframe=False).text + if param["iframe"]: # 如果标记了iframe + iframes = self.browser.find_elements( + By.CSS_SELECTOR, "iframe", iframe=False) + for iframe in iframes: + self.browser.switch_to.default_content() + self.browser.switch_to.frame(iframe) + iframe_text = super(self.browser.__class__, self.browser).find_element( + By.CSS_SELECTOR, "body").text # 用super调用父类的方法 + newBodyText += iframe_text + self.browser.switch_to.default_content() + if newBodyText == bodyText: + self.print_and_log("页面已检测不到新内容,停止滚动。") + self.print_and_log( + "No new content detected on the page, stop scrolling.") + break + else: + bodyText = newBodyText + body = self.browser.find_element( + By.CSS_SELECTOR, "body", iframe=param["iframe"]) body.send_keys(Keys.END) - try: - time.sleep(param["scrollWaitTime"]) # 下拉完等待 - except: - pass + self.print_and_log("滚动到底部,第", i + 1, "次。") + self.print_and_log( + "Scroll to the bottom, the", i + 1, "time.") + i = i + 1 + try: + time.sleep(param["scrollWaitTime"]) # 下拉完等待 + except: + pass + except Exception as e: + self.print_and_log("滚动屏幕时出错|Error scrolling screen:", e) + try: + self.browser.execute_script('window.stop()') + except: + pass + if scrollType != 0 and param["scrollCount"] > 0: # 控制屏幕向下滚动 + if scrollType == 1 or scrollType == 2: + for i in range(param["scrollCount"]): + body = self.browser.find_element( + By.CSS_SELECTOR, "body", iframe=param["iframe"]) + if scrollType == 1: + body.send_keys(Keys.PAGE_DOWN) + elif scrollType == 2: + body.send_keys(Keys.END) + try: + time.sleep(param["scrollWaitTime"]) # 下拉完等待 + except: + pass + self.print_and_log("向下滚动,第", i + 1, "次。") + self.print_and_log( + "Scroll down, the", i + 1, "time.") + elif scrollType == 3: + bodyText = "" + i = 0 + while True: + newBodyText = self.browser.find_element( + By.CSS_SELECTOR, "body", iframe=False).text + if param["iframe"]: # 如果标记了iframe + iframes = self.browser.find_elements( + By.CSS_SELECTOR, "iframe", iframe=False) + for iframe in iframes: + self.browser.switch_to.default_content() + self.browser.switch_to.frame(iframe) + iframe_text = super(self.browser.__class__, self.browser).find_element( + By.CSS_SELECTOR, "body").text # 用super调用父类的方法 + newBodyText += iframe_text + self.browser.switch_to.default_content() + if newBodyText == bodyText: + self.print_and_log("页面已检测不到新内容,停止滚动。") + self.print_and_log( + "No new content detected on the page, stop scrolling.") + break + else: + bodyText = newBodyText + body = self.browser.find_element( + By.CSS_SELECTOR, "body", iframe=param["iframe"]) + body.send_keys(Keys.END) + self.print_and_log("滚动到底部,第", i + 1, "次。") + self.print_and_log( + "Scroll to the bottom, the", i + 1, "time.") + i = i + 1 + try: + time.sleep(param["scrollWaitTime"]) # 下拉完等待 + except: + pass if rt != "": rt.end() @@ -302,15 +726,9 @@ class BrowserThread(Thread): return "" if max_wait_time == 0: max_wait_time = 999999 - # print(codeMode, code) + # self.print_and_log(codeMode, code) # 将value中的Field[""]替换为outputParameters中的键值 - pattern = r'Field\["([^"]+)"\]' - try: - replaced_text = re.sub( - pattern, lambda match: self.outputParameters.get(match.group(1), ''), code) - except: - replaced_text = code - code = replaced_text + code = replace_field_values(code, self.outputParameters, self) if iframe and self.browser.iframe_env == False: # 获取所有的 iframe self.browser.switch_to.default_content() @@ -325,7 +743,7 @@ class BrowserThread(Thread): self.browser.iframe_env = True break except: - print("Iframe switch failed") + self.print_and_log("Iframe switch failed") elif not iframe and self.browser.iframe_env == True: self.browser.switch_to.default_content() self.browser.iframe_env = False @@ -347,6 +765,27 @@ class BrowserThread(Thread): except: output = "" self.recordLog("JavaScript execution failed") + elif int(codeMode) == 5: + try: + code = readCode(code) + output = exec(code) + self.recordLog("执行下面的代码:" + code) + self.recordLog("Execute the following code:" + code) + except Exception as e: + self.print_and_log("执行下面的代码时出错:" + code, ",错误为:", e) + self.print_and_log("Error executing the following code:" + + code, ", error is:", e) + elif int(codeMode) == 6: + try: + code = readCode(code) + output = eval(code) + self.recordLog("获得下面的代码返回值:" + code) + self.recordLog( + "Get the return value of the following code:" + code) + except Exception as e: + self.print_and_log("获得下面的代码返回值时出错:" + code, ",错误为:", e) + self.print_and_log( + "Error executing and getting return value the following code:" + code, ", error is:", e) elif int(codeMode) == 1: self.recordLog("Execute System Call:" + code) self.recordLog("执行系统命令:" + code) @@ -357,25 +796,34 @@ class BrowserThread(Thread): code, capture_output=True, text=True, timeout=max_wait_time, shell=True) # 输出命令返回值 output = output.stdout - print(output) + self.print_and_log(output) except subprocess.TimeoutExpired: # 命令执行时间超过指定值,抛出异常 self.recordLog("Command timed out") self.recordLog("命令执行超时") except Exception as e: - print(e) # 打印异常信息 + self.print_and_log(e) # 打印异常信息 self.recordLog("Command execution failed") self.recordLog("命令执行失败") - return str(output) + try: + output = str(output) + except: + output = "无法转换为字符串|Unable to convert to string" + self.print_and_log("无法转换为字符串|Unable to convert to string", output) + return output def customOperation(self, node, loopValue, loopPath, index): params = node["parameters"] + if params["clear"] == 1: + self.clearOutputParameters() codeMode = int(params["codeMode"]) code = params["code"] output = "" max_wait_time = int(params["waitTime"]) if codeMode == 2: # 使用循环的情况下,传入的clickPath就是实际的xpath try: + loopPath = replace_field_values( + loopPath, self.outputParameters, self) elements = self.browser.find_elements( By.XPATH, loopPath, iframe=params["iframe"]) element = elements[index] @@ -383,27 +831,55 @@ class BrowserThread(Thread): codeMode, code, max_wait_time, element, iframe=params["iframe"]) except: output = "" - print("JavaScript execution failed") + self.print_and_log("JavaScript execution failed") elif codeMode == 3: self.BREAK = True - else: # 0 1 + self.recordLog("跳出循环|Break the loop") + elif codeMode == 4: + self.CONTINUE = True + self.recordLog("跳过本次循环|Skip this loop") + elif codeMode == 7: # 暂停程序执行 + self.event.clear() + self.print_and_log( + f"根据设置的自定义操作,任务已暂停,长按{self.service['pauseKey']}键继续执行...|Task paused according to custom operation, long press '{self.service['pauseKey']}' to continue...") + elif codeMode == 8: # 刷新页面 + self.browser.refresh() + self.print_and_log("根据设置的自定义操作,任务已刷新页面|Task refreshed page according to custom operation") + elif codeMode == 9: # 发送邮件 + send_email(node["parameters"]["emailConfig"]) + else: # 0 1 5 6 output = self.execute_code( codeMode, code, max_wait_time, iframe=params["iframe"]) recordASField = bool(params["recordASField"]) - if recordASField: - print("操作<" + node["title"] + ">的返回值为:" + output) - print("The return value of operation <" + node["title"] + "> is: " + output) + # if recordASField: + # self.print_and_log("操作<" + node["title"] + ">的返回值为:" + output) + # self.print_and_log("The return value of operation <" + node["title"] + "> is: " + output) self.outputParameters[node["title"]] = output - if recordASField: - line = new_line(self.outputParameters, self.maxViewLength, self.outputParametersRecord) + if recordASField and params["newLine"]: + line = new_line(self.outputParameters, + self.maxViewLength, self.outputParametersRecord) self.OUTPUT.append(line) def switchSelect(self, param, loopValue): - optionMode = int(param["optionMode"]) + optionMode = param["optionMode"] optionValue = param["optionValue"] + if param["useLoop"]: + index = param["index"] + if index != 0: + try: + optionValue = loopValue.split("~")[index - 1] + except: + self.print_and_log("取值失败,可能是因为取值索引超出范围,将使用整个文本值") + self.print_and_log( + "Failed to get value, maybe because the index is out of range, will use the entire text value") + else: + optionValue = loopValue + optionMode = 1 try: + xpath = replace_field_values( + param["xpath"], self.outputParameters, self) dropdown = Select(self.browser.find_element( - By.XPATH, param["xpath"], iframe=param["iframe"])) + By.XPATH, xpath, iframe=param["iframe"])) try: if optionMode == 0: # 获取当前选中的选项索引 @@ -419,77 +895,121 @@ class BrowserThread(Thread): dropdown.select_by_value(optionValue) elif optionMode == 3: dropdown.select_by_visible_text(optionValue) + # self.recordLog("切换到下拉框选项|Change to drop-down box option:", xpath) except: - print("切换下拉框选项失败:", param["xpath"], - param["optionMode"], param["optionValue"]) - print("Failed to change drop-down box option:", - param["xpath"], param["optionMode"], param["optionValue"]) + self.print_and_log("切换下拉框选项失败:", xpath, + param["optionMode"], param["optionValue"]) + self.print_and_log("Failed to change drop-down box option:", + xpath, param["optionMode"], param["optionValue"]) except: - print("找不到下拉框元素:", param["xpath"]) - print("Cannot find drop-down box element:", param["xpath"]) + self.print_and_log("找不到下拉框元素:", xpath) + self.print_and_log("Cannot find drop-down box element:", xpath) def moveToElement(self, param, loopElement=None, loopPath="", index=0): time.sleep(0.1) # 移动之前等待0.1秒 + loopPath = replace_field_values(loopPath, self.outputParameters, self) + xpath = replace_field_values( + param["xpath"], self.outputParameters, self) if param["useLoop"]: # 使用循环的情况下,传入的clickPath就是实际的xpath - path = loopPath + if xpath == "": + path = loopPath + else: + path = "(" + loopPath + ")" + \ + "[" + str(index + 1) + "]" + \ + xpath + index = 0 # 如果是相对循环内元素的点击,在定位到元素后,index应该重置为0 # element = loopElement else: index = 0 - path = param["xpath"] # 不然使用元素定义的xpath - # element = self.browser.find_element( - # By.XPATH, path, iframe=param["iframe"]) + path = xpath # 不然使用元素定义的xpath + path = replace_field_values(path, self.outputParameters, self) try: elements = self.browser.find_elements( By.XPATH, path, iframe=param["iframe"]) element = elements[index] try: ActionChains(self.browser).move_to_element(element).perform() + # self.recordLog("移动到元素|Move to element:", path) except: - print("移动鼠标到元素失败:", param["xpath"]) - print("Failed to move mouse to element:", param["xpath"]) + self.print_and_log("移动鼠标到元素失败:", xpath) + self.print_and_log("Failed to move mouse to element:", xpath) except: - print("找不到元素:", param["xpath"]) - print("Cannot find element:", param["xpath"]) + self.print_and_log("找不到元素:", xpath) + self.print_and_log("Cannot find element:", xpath) # 执行节点关键函数部分 - def executeNode(self, nodeId, loopValue="", loopPath="", index=0): node = self.procedure[nodeId] - WebDriverWait(self.browser, 10).until - # 等待元素出现才进行操作,10秒内未出现则报错 - (EC.visibility_of_element_located( - (By.XPATH, node["parameters"]["xpath"]))) - - # 根据不同选项执行不同操作 - if node["option"] == 0 or node["option"] == 10: # root操作,条件分支操作 - for i in node["sequence"]: # 从根节点开始向下读取 - self.executeNode(i, loopValue, loopPath, index) - elif node["option"] == 1: # 打开网页操作 - self.recordLog("openPage") - self.openPage(node["parameters"], loopValue) - elif node["option"] == 2: # 点击元素 - self.recordLog("Click") - self.clickElement(node["parameters"], loopValue, loopPath, index) - elif node["option"] == 3: # 提取数据 - self.recordLog("getData") - self.getData(node["parameters"], loopValue, node["isInLoop"], - parentPath=loopPath, index=index) - self.saveData() - elif node["option"] == 4: # 输入文字 - self.inputInfo(node["parameters"], loopValue) - elif node["option"] == 5: # 自定义操作 - self.customOperation(node, loopValue, loopPath, index) - self.saveData() - elif node["option"] == 6: # 切换下拉框 - self.switchSelect(node["parameters"], loopValue) - elif node["option"] == 7: # 鼠标移动到元素上 - self.moveToElement(node["parameters"], loopValue, loopPath, index) - elif node["option"] == 8: # 循环 - self.recordLog("loop") - self.loopExecute(node, loopValue, loopPath, index) # 执行循环 - elif node["option"] == 9: # 条件分支 - self.recordLog("judge") - self.judgeExecute(node, loopValue, loopPath, index) + # WebDriverWait(self.browser, 10).until + # # 等待元素出现才进行操作,10秒内未出现则报错 + # (EC.visibility_of_element_located( + # (By.XPATH, node["parameters"]["xpath"]))) + try: + if node["parameters"]["waitElement"] != "": + waitElement = replace_field_values( + node["parameters"]["waitElement"], self.outputParameters, self) + waitElementTime = float(node["parameters"]["waitElementTime"]) + waitElementIframeIndex = node["parameters"]["waitElementIframeIndex"] + self.print_and_log("等待元素出现:", waitElement) + self.print_and_log( + "Waiting for element to appear:", waitElement) + if waitElementIframeIndex > 0: + iframes = self.browser.find_elements( + By.CSS_SELECTOR, "iframe", iframe=False) + iframe = iframes[waitElementIframeIndex - 1] + self.browser.switch_to.frame(iframe) + WebDriverWait(self.browser, waitElementTime).until( + EC.presence_of_element_located((By.XPATH, waitElement)) + ) + if waitElementIframeIndex > 0: + self.browser.switch_to.default_content() + except Exception as e: + if waitElement != "": + self.print_and_log("等待元素出现超时:", waitElement, ",将继续执行。") + self.print_and_log("Timeout waiting for element to appear:", + waitElement, ", will continue to execute.") + self.recordLog(e) + self.recordLog("Wait element not found") + self.recordLog("执行节点|Execute node:", node["title"]) + try: + # 根据不同选项执行不同操作 + if node["option"] == 0 or node["option"] == 10: # root操作,条件分支操作 + for i in node["sequence"]: # 从根节点开始向下读取 + self.executeNode(i, loopValue, loopPath, index) + elif node["option"] == 1: # 打开网页操作 + # if not (nodeId == 1 and self.service["cloudflare"] == 1): + self.openPage(node["parameters"], loopValue) + elif node["option"] == 2: # 点击元素 + self.clickElement(node["parameters"], loopValue, loopPath, index) + elif node["option"] == 3: # 提取数据 + # 针对提取数据操作,设置操作开始的步骤,用于不小心关闭后的恢复的增量采集 + if self.totalSteps >= self.startSteps: + self.getData(node["parameters"], loopValue, node["isInLoop"], + parentPath=loopPath, index=index) + self.saveData() + else: + # self.getDataStep += 1 + self.print_and_log("跳过第" + str(self.totalSteps) + "次提取数据。") + self.print_and_log( + "Skip the " + str(self.totalSteps) + "th data extraction.") + self.totalSteps += 1 # 总步数加一 + elif node["option"] == 4: # 输入文字 + self.inputInfo(node["parameters"], loopValue) + elif node["option"] == 5: # 自定义操作 + self.customOperation(node, loopValue, loopPath, index) + self.saveData() + elif node["option"] == 6: # 切换下拉框 + self.switchSelect(node["parameters"], loopValue) + elif node["option"] == 7: # 鼠标移动到元素上 + self.moveToElement(node["parameters"], loopValue, loopPath, index) + elif node["option"] == 8: # 循环 + self.loopExecute(node, loopValue, loopPath, index) # 执行循环 + elif node["option"] == 9: # 条件分支 + self.judgeExecute(node, loopValue, loopPath, index) + except Exception as e: + self.print_and_log("执行节点<" + node["title"] + ">时出错,将继续执行,错误为:", e) + self.print_and_log("Error executing node <" + node["title"] + ">, will continue to execute, error is:", e) + # 执行完之后进行等待 if node["option"] != 0 and node["option"] != 2: # 点击元素操作单独定义等待时间操作 @@ -504,11 +1024,9 @@ class BrowserThread(Thread): time.sleep(waitTime) elif waitType == 1: # 随机等待时间 time.sleep(random.uniform(waitTime * 0.5, waitTime * 1.5)) - self.Log("Wait seconds after node executing: ", waitTime) self.event.wait() # 等待事件结束 # 对判断条件的处理 - def judgeExecute(self, node, loopElement, clickPath="", index=0): executeBranchId = 0 # 要执行的BranchId for i in node["sequence"]: @@ -521,42 +1039,57 @@ class BrowserThread(Thread): try: bodyText = self.browser.find_element( By.CSS_SELECTOR, "body", iframe=cnode["parameters"]["iframe"]).text - if bodyText.find(cnode["parameters"]["value"]) >= 0: + value = replace_field_values( + cnode["parameters"]["value"], self.outputParameters, self) + if bodyText.find(value) >= 0: executeBranchId = i break except: # 找不到元素下一个条件 continue elif tType == 2: # 当前页面包含元素 try: - if self.browser.find_element(By.XPATH, cnode["parameters"]["value"], iframe=cnode["parameters"]["iframe"]): + xpath = replace_field_values( + cnode["parameters"]["value"], self.outputParameters, self) + if self.browser.find_element(By.XPATH, xpath, iframe=cnode["parameters"]["iframe"]): executeBranchId = i break except: # 找不到元素或者xpath写错了,下一个条件 continue elif tType == 3: # 当前循环元素包括文本 try: - if loopElement.text.find(cnode["parameters"]["value"]) >= 0: + value = replace_field_values( + cnode["parameters"]["value"], self.outputParameters, self) + if loopElement.text.find(value) >= 0: executeBranchId = i break except: # 找不到元素或者xpath写错了,下一个条件 continue elif tType == 4: # 当前循环元素包括元素 try: - if loopElement.find_element(By.XPATH, cnode["parameters"]["value"][1:]): + xpath = replace_field_values( + cnode["parameters"]["value"][1:], self.outputParameters, self) + if loopElement.find_element(By.XPATH, xpath): executeBranchId = i break except: # 找不到元素或者xpath写错了,下一个条件 continue - elif tType <= 7: # JS命令返回值 + elif tType <= 8: # JS命令返回值 if tType == 5: # JS命令返回值等于 output = self.execute_code( - 0, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], iframe=cnode["parameters"]["iframe"]) + 0, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], + iframe=cnode["parameters"]["iframe"]) elif tType == 6: # System output = self.execute_code( - 1, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], iframe=cnode["parameters"]["iframe"]) + 1, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], + iframe=cnode["parameters"]["iframe"]) elif tType == 7: # 针对当前循环项的JS命令返回值 output = self.execute_code( - 2, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], loopElement, iframe=cnode["parameters"]["iframe"]) + 2, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], loopElement, + iframe=cnode["parameters"]["iframe"]) + elif tType == 8: # 针对当前循环项的System命令返回值 + output = self.execute_code( + 6, cnode["parameters"]["code"], cnode["parameters"]["waitTime"], loopElement, + iframe=cnode["parameters"]["iframe"]) try: if output.find("rue") != -1: # 如果返回值中包含true code = 1 @@ -567,229 +1100,407 @@ class BrowserThread(Thread): if code > 0: executeBranchId = i break - # rt.end() if executeBranchId != 0: self.executeNode(executeBranchId, loopElement, clickPath, index) + else: + self.recordLog( + "判断条件内所有条件分支的条件都不满足|None of the conditions in the judgment condition are met") + + def handleHistory(self, node, xpath, thisHistoryURL, thisHistoryLength, index, element=None, elements=None): + if self.history["index"] != thisHistoryLength and self.history["handle"] == self.browser.current_window_handle: # 如果执行完一次循环之后历史记录发生了变化,注意当前页面的判断 + difference = thisHistoryLength - self.history["index"] # 计算历史记录变化差值 + self.browser.execute_script('history.go(' + str(difference) + ')') # 回退历史记录 + # if node["parameters"]["historyWait"] > 2: # 回退后要等待的时间 + time.sleep(node["parameters"]["historyWait"]) + # else: + # time.sleep(2) + try: + self.browser.execute_script('window.stop()') + except: + pass + ti = 0 + # print("CURRENT URL:", self.browser.current_url) + # time.sleep(2) + # if self.browser.current_url.startswith("data:") or self.browser.current_url.startswith("chrome:"): + if self.browser.current_url != thisHistoryURL and self.history["index"] != thisHistoryLength and self.history["handle"] == self.browser.current_window_handle: + while self.browser.current_url != thisHistoryURL: # 如果执行完一次循环之后网址发生了变化 + try: + self.browser.execute_script("history.go(1)") # 如果是data:开头的网址,就前进一步 + except: # 超时的情况下 + pass + ti += 1 + if self.browser.current_url == thisHistoryURL or ti > thisHistoryLength: # 如果执行完一次循环之后网址发生了变化 + break + time.sleep(2) + if element == None: # 不固定元素列表 + element = self.browser.find_elements(By.XPATH, xpath, iframe=node["parameters"]["iframe"]) + else: # 固定元素列表 + element = self.browser.find_element(By.XPATH, xpath, iframe=node["parameters"]["iframe"]) + # if index > 0: + # index -= 1 # 如果是data:开头的网址,就要重试一次 + else: + if element == None: + element = elements + return index, element # 对循环的处理 def loopExecute(self, node, loopValue, clickPath="", index=0): time.sleep(0.1) # 第一次执行循环的时候强制等待1秒 - # self.Log("循环执行前等待0.1秒") - self.Log("Wait 0.1 second before loop") thisHandle = self.browser.current_window_handle # 记录本次循环内的标签页的ID - thisHistoryLength = self.browser.execute_script( - 'return history.length') # 记录本次循环内的history的length + try: + thisHistoryLength = self.browser.execute_script( + 'return history.length') # 记录本次循环内的history的length + except: + thisHistoryLength = 0 self.history["index"] = thisHistoryLength self.history["handle"] = thisHandle - if int(node["parameters"]["loopType"]) == 0: # 单个元素循环 + thisHistoryURL = self.browser.current_url + # 快速提取处理 + if node["parameters"]["quickExtractable"]: + self.browser.switch_to.default_content() # 切换到主页面 + tree = html.fromstring(self.browser.page_source) + if int(node["parameters"]["loopType"]) == 1: # 不固定元素列表 + baseXPath = replace_field_values(node["parameters"]["baseXPath"], self.outputParameters, self) + rows = tree.xpath(baseXPath) + elif int(node["parameters"]["loopType"]) == 2: # 固定元素列表 + rows = [] + for path in node["parameters"]["baseXPath"].split("\n"): + baseXPath = replace_field_values(path, self.outputParameters, self) + rows.extend(tree.xpath(baseXPath)) + + for row in rows: + if node["parameters"]["clear"] == 1: + self.clearOutputParameters() + for param in node["parameters"]["quickParams"]: + xpath = replace_field_values(param["xpath"], self.outputParameters, self) + content = row.xpath(xpath) + try: + content = ' '.join(result.strip() + for result in content if result.strip()) + # 链接或者图片的情况下,合并链接相对路径为绝对路径 + if param["nodeType"] == 2 or param["nodeType"] == 4: + base_url = self.browser.current_url + # 合并链接相对路径为绝对路径 + content = urljoin(base_url, content) + if len(content) == 0: + content = param["default"] + except: + content = param["default"] + self.outputParameters[param["name"]] = content + if node["parameters"]["newLine"]: + line = new_line(self.outputParameters, + self.maxViewLength, self.outputParametersRecord) + self.OUTPUT.append(line) + self.saveData() + elif int(node["parameters"]["loopType"]) == 0: # 单个元素循环 # 无跳转标签页操作 count = 0 # 执行次数 + bodyText = "-" while True: # do while循环 try: finished = False + if node["parameters"]["exitCount"] == 0: + # newBodyText = self.browser.find_element(By.XPATH, node["parameters"]["exitElement"], iframe=node["parameters"]["iframe"]).text + # 用find_elements获取所有匹配到的文本 + try: + exitElements = self.browser.find_elements(By.XPATH, node["parameters"]["exitElement"], iframe=node["parameters"]["iframe"]) + newBodyText = "" + for exitElement in exitElements: + newBodyText += exitElement.text + except Exception as e: + self.print_and_log(f"设定的退出循环元素:{node['parameters']['exitElement']}的文本无法获取,本次循环将不再检测元素文本是否变化,将会继续执行,为解决此问题,您可以修改检测元素文本不变的元素为其他元素,或者将循环次数设定为固定次数大于0的值。") + self.print_and_log(f"The text of the exit loop element set: {node['parameters']['exitElement']} cannot be obtained, this loop will no longer check whether the text of the element has changed, and will continue to execute. To solve this problem, you can modify the element whose text does not change to other elements, or set the number of loops to a fixed number greater than 0.") + self.print_and_log(e) + exitElements = [] + # newBodyText为随机文本,保证一直执行 + newBodyText = str(random.random()) + if node["parameters"]["iframe"]: # 如果标记了iframe + iframes = self.browser.find_elements( + By.CSS_SELECTOR, "iframe", iframe=False) + for iframe in iframes: + self.browser.switch_to.default_content() + self.browser.switch_to.frame(iframe) + iframe_text = super(self.browser.__class__, self.browser).find_element( + By.CSS_SELECTOR, "body").text # 用super调用父类的方法 + newBodyText += iframe_text + self.browser.switch_to.default_content() + if newBodyText == bodyText: # 如果页面内容无变化 + self.print_and_log("页面已检测不到新内容,停止循环。") + self.print_and_log( + "No new content detected on the page, stop loop.") + finished = True + break + else: + self.print_and_log("检测到页面变化,继续循环。") + self.print_and_log( + "Page changed detected, continue loop.") + bodyText = newBodyText + xpath = replace_field_values( + node["parameters"]["xpath"], self.outputParameters, self) + # self.recordLog("循环元素|Loop element:", xpath) element = self.browser.find_element( - By.XPATH, node["parameters"]["xpath"], iframe=node["parameters"]["iframe"]) + By.XPATH, xpath, iframe=node["parameters"]["iframe"]) for i in node["sequence"]: # 挨个执行操作 self.executeNode( - i, element, node["parameters"]["xpath"], 0) - if self.BREAK: # 如果有break操作,下面的操作不执行 + i, element, xpath, 0) + if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 + self.CONTINUE = False break - if self.BREAK: # 如果有break操作,退出循环 + if self.BREAK: # 如果有break操作,退出循环 self.BREAK = False finished = True break finished = True - self.Log("Click: ", node["parameters"]["xpath"]) - self.recordLog("Click:" + node["parameters"]["xpath"]) except NoSuchElementException: # except: - print("Single loop element not found: ", - node["parameters"]["xpath"]) - print("找不到要循环的单个元素: ", node["parameters"]["xpath"]) - self.recordLog( - "Single loop element not found: " + node["parameters"]["xpath"]) + self.print_and_log("Single loop element not found: ", + xpath) + self.print_and_log("找不到要循环的单个元素: ", xpath) for i in node["sequence"]: # 不带点击元素的把剩余的如提取数据的操作执行一遍 if node["option"] != 2: self.executeNode( - i, None, node["parameters"]["xpath"], 0) + i, None, xpath, 0) finished = True break # 如果找不到元素,退出循环 finally: if not finished: - print("\n\n-------Retrying-------\n\n") - self.Log("-------Retrying-------: ", - node["parameters"]["xpath"]) - self.recordLog("ClickNotFound:" + - node["parameters"]["xpath"]) + self.print_and_log("\n\n-------Retrying-------\n\n") + self.print_and_log("-------Retrying-------: ", + node["parameters"]["xpath"]) for i in node["sequence"]: # 不带点击元素的把剩余的如提取数据的操作执行一遍 if node["option"] != 2: self.executeNode( - i, None, node["parameters"]["xpath"], 0) + i, None, xpath, 0) break # 如果找不到元素,退出循环 count = count + 1 - self.Log("Page: ", count) - self.recordLog("Page:" + str(count)) - # print(node["parameters"]["exitCount"], "-------") + self.print_and_log("Page: ", count) + # self.print_and_log(node["parameters"]["exitCount"], "-------") if node["parameters"]["exitCount"] == count: # 如果达到设置的退出循环条件的话 break if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], node["parameters"]["breakCodeWaitTime"], iframe=node["parameters"]["iframe"]) + node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], + node["parameters"]["breakCodeWaitTime"], + iframe=node["parameters"]["iframe"]) code = get_output_code(output) if code <= 0: break elif int(node["parameters"]["loopType"]) == 1: # 不固定元素列表 try: + xpath = replace_field_values( + node["parameters"]["xpath"], self.outputParameters, self) elements = self.browser.find_elements(By.XPATH, - node["parameters"]["xpath"], iframe=node["parameters"]["iframe"]) + xpath, iframe=node["parameters"]["iframe"]) + # self.recordLog("循环元素|Loop element:", xpath) if len(elements) == 0: - print("Loop element not found: ", - node["parameters"]["xpath"]) - print("找不到循环元素: ", node["parameters"]["xpath"]) - self.recordLog("pathNotFound: " + - node["parameters"]["xpath"]) - for index in range(len(elements)): + self.print_and_log("Loop element not found: ", + xpath) + self.print_and_log("找不到循环元素:", xpath) + index = 0 + skipCount = node["parameters"]["skipCount"] + while index < len(elements): + if index < skipCount: + index += 1 + self.print_and_log("跳过第" + str(index) + "个元素") + self.print_and_log("Skip the " + str(index) + "th element") + continue + try: + element = elements[index] + element_text = element.text + except StaleElementReferenceException: # 如果元素已经失效,重试 + self.print_and_log("元素已失效,重新获取元素|Element has expired, reacquiring element") + elements = self.browser.find_elements(By.XPATH, + xpath, iframe=node["parameters"]["iframe"]) + element = elements[index] for i in node["sequence"]: # 挨个顺序执行循环里所有的操作 - self.executeNode(i, elements[index], - node["parameters"]["xpath"], index) - if self.BREAK: + self.executeNode(i, element, + xpath, index) + if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 + self.CONTINUE = False break if self.BREAK: self.BREAK = False break - if self.browser.current_window_handle != thisHandle: # 如果执行完一次循环之后标签页的位置发生了变化 - while True: # 一直关闭窗口直到当前标签页 - self.browser.close() # 关闭使用完的标签页 - self.browser.switch_to.window( - self.browser.window_handles[-1]) - if self.browser.current_window_handle == thisHandle: - break - if self.history["index"] != thisHistoryLength and self.history[ - "handle"] == self.browser.current_window_handle: # 如果执行完一次循环之后历史记录发生了变化,注意当前页面的判断 - difference = thisHistoryLength - \ - self.history["index"] # 计算历史记录变化差值 - self.browser.execute_script( - 'history.go(' + str(difference) + ')') # 回退历史记录 - # if node["parameters"]["historyWait"] > 2: # 回退后要等待的时间 - time.sleep(node["parameters"]["historyWait"]) - # else: - # time.sleep(2) - # 切换历史记录等待: - self.Log("Change history back time or:", - node["parameters"]["historyWait"]) - self.browser.execute_script('window.stop()') + try: + changed_handle = self.browser.current_window_handle != thisHandle + except: # 如果网页被意外关闭了的情况下 + self.browser.switch_to.window( + self.browser.window_handles[-1]) + changed_handle = self.browser.window_handles[-1] != thisHandle + if changed_handle: # 如果执行完一次循环之后标签页的位置发生了变化 + try: + while True: # 一直关闭窗口直到当前标签页 + self.browser.close() # 关闭使用完的标签页 + self.browser.switch_to.window( + self.browser.window_handles[-1]) + if self.browser.current_window_handle == thisHandle: + break + except Exception as e: + self.print_and_log("关闭标签页发生错误:", e) + self.print_and_log( + "Error occurred while closing tab: ", e) + index, elements = self.handleHistory(node, xpath, thisHistoryURL, thisHistoryLength, index, elements=elements) if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], node["parameters"]["breakCodeWaitTime"], iframe=node["parameters"]["iframe"]) + node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], + node["parameters"]["breakCodeWaitTime"], + iframe=node["parameters"]["iframe"]) code = get_output_code(output) if code <= 0: break + index = index + 1 except NoSuchElementException: - print("Loop element not found: ", node["parameters"]["xpath"]) - print("找不到循环元素: ", node["parameters"]["xpath"]) - self.recordLog("pathNotFound: " + node["parameters"]["xpath"]) + self.print_and_log("Loop element not found: ", xpath) + self.print_and_log("找不到循环元素:", xpath) except Exception as e: raise elif int(node["parameters"]["loopType"]) == 2: # 固定元素列表 # 千万不要忘了分割!! - for path in node["parameters"]["pathList"].split("\n"): + paths = node["parameters"]["pathList"].split("\n") + # for path in node["parameters"]["pathList"].split("\n"): + index = 0 + skipCount = node["parameters"]["skipCount"] + while index < len(paths): + if index < skipCount: + index += 1 + self.print_and_log("跳过第" + str(index) + "个元素") + self.print_and_log("Skip the " + str(index) + "th element") + continue + path = paths[index] try: + path = replace_field_values( + path, self.outputParameters, self) element = self.browser.find_element( By.XPATH, path, iframe=node["parameters"]["iframe"]) + # self.recordLog("循环元素|Loop element:", path) for i in node["sequence"]: # 挨个执行操作 self.executeNode(i, element, path, 0) - if self.BREAK: + if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 + self.CONTINUE = False break if self.BREAK: self.BREAK = False break - if self.browser.current_window_handle != thisHandle: # 如果执行完一次循环之后标签页的位置发生了变化 - while True: # 一直关闭窗口直到当前标签页 - self.browser.close() # 关闭使用完的标签页 - self.browser.switch_to.window( - self.browser.window_handles[-1]) - if self.browser.current_window_handle == thisHandle: - break - if self.history["index"] != thisHistoryLength and self.history[ - "handle"] == self.browser.current_window_handle: # 如果执行完一次循环之后历史记录发生了变化,注意当前页面的判断 - difference = thisHistoryLength - \ - self.history["index"] # 计算历史记录变化差值 - self.browser.execute_script( - 'history.go(' + str(difference) + ')') # 回退历史记录 - # if node["parameters"]["historyWait"] > 2: # 回退后要等待的时间 - time.sleep(node["parameters"]["historyWait"]) - # else: - # time.sleep(2) - self.Log("Change history back time or:", - node["parameters"]["historyWait"]) - self.browser.execute_script('window.stop()') + try: + changed_handle = self.browser.current_window_handle != thisHandle + except: # 如果网页被意外关闭了的情况下 + self.browser.switch_to.window( + self.browser.window_handles[-1]) + changed_handle = self.browser.window_handles[-1] != thisHandle + if changed_handle: # 如果执行完一次循环之后标签页的位置发生了变化 + try: + while True: # 一直关闭窗口直到当前标签页 + self.browser.close() # 关闭使用完的标签页 + self.browser.switch_to.window( + self.browser.window_handles[-1]) + if self.browser.current_window_handle == thisHandle: + break + except Exception as e: + self.print_and_log("关闭标签页发生错误:", e) + self.print_and_log( + "Error occurred while closing tab: ", e) + index, element = self.handleHistory(node, path, thisHistoryURL, thisHistoryLength, index, element=element) except NoSuchElementException: - print("Loop element not found: ", path) - print("找不到循环元素: ", path) - self.recordLog("pathNotFound: " + path) + self.print_and_log("Loop element not found: ", path) + self.print_and_log("找不到循环元素:", path) + index += 1 continue # 循环中找不到元素就略过操作 except Exception as e: raise if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], node["parameters"]["breakCodeWaitTime"], iframe=node["parameters"]["iframe"]) + node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], + node["parameters"]["breakCodeWaitTime"], + iframe=node["parameters"]["iframe"]) code = get_output_code(output) if code <= 0: break + index = index + 1 elif int(node["parameters"]["loopType"]) == 3: # 固定文本列表 textList = node["parameters"]["textList"].split("\n") + if len(textList) == 1: # 如果固定文本列表只有一行,现在就可以替换变量 + textList = replace_field_values( + node["parameters"]["textList"], self.outputParameters, self).split("\n") + skipCount = node["parameters"]["skipCount"] + index = 0 for text in textList: - self.recordLog("input: " + text) + if index < skipCount: + index += 1 + self.print_and_log("跳过第" + str(index) + "个文本") + self.print_and_log("Skip the " + str(index) + "th text") + continue + text = replace_field_values(text, self.outputParameters, self) + # self.recordLog("当前循环文本|Current loop text:", text) for i in node["sequence"]: # 挨个执行操作 self.executeNode(i, text, "", 0) - if self.BREAK: + if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 + self.CONTINUE = False break if self.BREAK: self.BREAK = False break if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], node["parameters"]["breakCodeWaitTime"], iframe=node["parameters"]["iframe"]) + node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], + node["parameters"]["breakCodeWaitTime"], + iframe=node["parameters"]["iframe"]) code = get_output_code(output) if code <= 0: break elif int(node["parameters"]["loopType"]) == 4: # 固定网址列表 # tempList = node["parameters"]["textList"].split("\r\n") urlList = list( - filter(isnull, node["parameters"]["textList"].split("\n"))) # 去空行 - # urlList = [] - # for url in tempList: - # if url != "": - # urlList.append(url) + filter(isnotnull, node["parameters"]["textList"].split("\n"))) # 去空行 + if len(urlList) == 1: # 如果固定网址列表只有一行,现在就可以替换变量 + urlList = replace_field_values( + node["parameters"]["textList"], self.outputParameters, self).split("\n") + skipCount = node["parameters"]["skipCount"] + index = 0 for url in urlList: - self.recordLog("input: " + url) + if index < skipCount: + index += 1 + self.print_and_log("跳过第" + str(index) + "个网址") + self.print_and_log("Skip the " + str(index) + "th url") + continue + url = replace_field_values(url, self.outputParameters, self) + # self.recordLog("当前循环网址|Current loop url:", url) for i in node["sequence"]: self.executeNode(i, url, "", 0) - if self.BREAK: + if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 + self.CONTINUE = False break if self.BREAK: self.BREAK = False break if int(node["parameters"]["breakMode"]) > 0: # 如果设置了退出循环的脚本条件 output = self.execute_code(int( - node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], node["parameters"]["breakCodeWaitTime"], iframe=node["parameters"]["iframe"]) + node["parameters"]["breakMode"]) - 1, node["parameters"]["breakCode"], + node["parameters"]["breakCodeWaitTime"], + iframe=node["parameters"]["iframe"]) code = get_output_code(output) if code <= 0: break - elif int(node["parameters"]["loopType"]) <= 6: # 命令返回值 + elif int(node["parameters"]["loopType"]) <= 7: # 命令返回值 while True: # do while循环 if int(node["parameters"]["loopType"]) == 5: # JS output = self.execute_code( - 0, node["parameters"]["code"], node["parameters"]["waitTime"], iframe=node["parameters"]["iframe"]) + 0, node["parameters"]["code"], node["parameters"]["waitTime"], + iframe=node["parameters"]["iframe"]) elif int(node["parameters"]["loopType"]) == 6: # System output = self.execute_code( - 1, node["parameters"]["code"], node["parameters"]["waitTime"], iframe=node["parameters"]["iframe"]) + 1, node["parameters"]["code"], node["parameters"]["waitTime"], + iframe=node["parameters"]["iframe"]) + elif int(node["parameters"]["loopType"]) == 7: # Python + output = self.execute_code( + 6, node["parameters"]["code"], node["parameters"]["waitTime"], + iframe=node["parameters"]["iframe"]) code = get_output_code(output) if code <= 0: break for i in node["sequence"]: # 挨个执行操作 self.executeNode(i, code, node["parameters"]["xpath"], 0) - if self.BREAK: + if self.BREAK or self.CONTINUE: # 如果有break操作,下面的操作不执行 + self.CONTINUE = False break if self.BREAK: self.BREAK = False @@ -798,13 +1509,16 @@ class BrowserThread(Thread): self.history["handle"] = self.browser.current_window_handle self.scrollDown(node["parameters"]) - # 打开网页事件 + # 打开网页操作 def openPage(self, param, loopValue): time.sleep(1) # 打开网页后强行等待至少1秒 if len(self.browser.window_handles) > 1: self.browser.switch_to.window( self.browser.window_handles[-1]) # 打开网页操作从第1个页面开始 - self.browser.close() + try: + self.browser.close() + except: + pass self.browser.switch_to.window( self.browser.window_handles[0]) # 打开网页操作从第1个页面开始 self.history["handle"] = self.browser.current_window_handle @@ -815,16 +1529,10 @@ class BrowserThread(Thread): # clear output parameters for key in self.outputParameters: self.outputParameters[key] = "" - else: - url = list(filter(isnull, param["links"].split("\n")))[0] + else: # 在流程图其他位置设置了打开网页的操作,读取的应该是第一个网址,如打开网页后登录,再打开第二个网页 + url = list(filter(isnotnull, param["links"].split("\n")))[0] # 将value中的Field[""]替换为outputParameters中的键值 - pattern = r'Field\["([^"]+)"\]' - try: - replaced_text = re.sub( - pattern, lambda match: self.outputParameters.get(match.group(1), ''), url) - except: - replaced_text = url - url = replaced_text + url = replace_field_values(url, self.outputParameters, self) try: maxWaitTime = int(param["maxWaitTime"]) except: @@ -841,19 +1549,16 @@ class BrowserThread(Thread): cookie_dict = {'name': name, 'value': value} # 加载 cookie self.browser.add_cookie(cookie_dict) - self.Log('Loading page: ' + url) - self.recordLog('Loading page: ' + url) + self.print_and_log('加载页面|Loading page: ' + url) except TimeoutException: - self.Log('Time out after set seconds when loading page: ' + url) - self.recordLog( + self.print_and_log( 'Time out after set seconds when loading page: ' + url) try: self.browser.execute_script('window.stop()') except: pass except Exception as e: - print("Failed to load page: " + url) - self.recordLog('Failed to load page: ' + url) + self.print_and_log("Failed to load page: " + url) try: self.history["index"] = self.browser.execute_script( "return history.length") @@ -864,15 +1569,19 @@ class BrowserThread(Thread): "return history.length") except: self.history["index"] = 0 + except Exception as e: + self.print_and_log("History Length Error") + self.history["index"] = 0 self.scrollDown(param) # 控制屏幕向下滚动 - # 键盘输入事件 + # 键盘输入操作 def inputInfo(self, param, loopValue): time.sleep(0.1) # 输入之前等待0.1秒 - self.Log("Wait 0.1 second before input") try: + xpath = replace_field_values( + param["xpath"], self.outputParameters, self) textbox = self.browser.find_element( - By.XPATH, param["xpath"], iframe=param["iframe"]) + By.XPATH, xpath, iframe=param["iframe"]) # textbox.send_keys(Keys.CONTROL, 'a') # textbox.send_keys(Keys.BACKSPACE) self.execute_code( @@ -889,28 +1598,36 @@ class BrowserThread(Thread): else: value = param["value"] # 将value中的Field[""]替换为outputParameters中的键值 - pattern = r'Field\["([^"]+)"\]' + # pattern = r'Field\["([^"]+)"\]' try: - replaced_text = re.sub( - pattern, lambda match: self.outputParameters.get(match.group(1), ''), value) + # replaced_text = re.sub( + # pattern, lambda match: self.outputParameters.get(match.group(1), ''), value) + replaced_text = replace_field_values(value, self.outputParameters, self) replaced_text = re.sub( '', '', replaced_text, flags=re.IGNORECASE) except: replaced_text = value + index = param["index"] + if index != 0: + try: + replaced_text = replaced_text.split("~")[index - 1] + except: + self.print_and_log("取值失败,可能是因为取值索引超出范围,将使用整个文本值") + self.print_and_log( + "Failed to get value, maybe because the index is out of range, will use the entire text value") textbox.send_keys(replaced_text) if value.lower().find("") >= 0: textbox.send_keys(Keys.ENTER) + self.recordLog("输入文字|Input text: " + + replaced_text + " to " + xpath) self.execute_code( 2, param["afterJS"], param["afterJSWaitTime"], textbox, iframe=param["iframe"]) # 执行后置js except: - print("Cannot find input box element:" + - param["xpath"] + ", please try to set the wait time before executing this operation") - print("找不到输入框元素:" + param["xpath"] + ",请尝试在执行此操作前设置等待时间") - self.recordLog("Cannot find input box element:" + - param["xpath"] + "Please try to set the wait time before executing this operation") - - # 点击元素事件 + self.print_and_log("Cannot find input box element:" + + xpath + ", please try to set the wait time before executing this operation") + self.print_and_log("找不到输入框元素:" + xpath + ",请尝试在执行此操作前设置等待时间") + # 点击元素操作 def clickElement(self, param, loopElement=None, clickPath="", index=0): try: maxWaitTime = int(param["maxWaitTime"]) @@ -922,12 +1639,25 @@ class BrowserThread(Thread): try: # element = self.browser.find_element( # By.XPATH, path, iframe=param["iframe"]) - if param["useLoop"]: # 使用循环的情况下,传入的clickPath就是实际的xpath - path = clickPath + clickPath = replace_field_values( + clickPath, self.outputParameters, self) + xpath = replace_field_values( + param["xpath"], self.outputParameters, self) + if xpath.find("point(") >= 0: # 如果xpath中包含point(),说明是相对坐标的点击 + index = 0 + path = "//body" + elif param["useLoop"]: # 使用循环的情况下,传入的clickPath就是实际的xpath + if xpath == "": + path = clickPath + else: + path = "(" + clickPath + ")" + \ + "[" + str(index + 1) + "]" + \ + xpath + index = 0 # 如果是相对循环内元素的点击,在定位到元素后,index应该重置为0 # element = loopElement else: index = 0 - path = param["xpath"] # 不然使用元素定义的xpath + path = xpath # 不然使用元素定义的xpath # element = self.browser.find_element( # By.XPATH, path, iframe=param["iframe"]) elements = self.browser.find_elements( @@ -937,35 +1667,84 @@ class BrowserThread(Thread): self.execute_code(2, param["beforeJS"], param["beforeJSWaitTime"], element, iframe=param["iframe"]) except: - print("Cannot find element:" + - path + ", please try to set the wait time before executing this operation") - print("找不到要点击的元素:" + path + ",请尝试在执行此操作前设置等待时间") - self.recordLog("Cannot find element:" + - path + ", please try to set the wait time before executing this operation") + self.print_and_log("Cannot find element:" + + path + ", please try to set the wait time before executing this operation") + self.print_and_log("找不到要点击的元素:" + path + ",请尝试在执行此操作前设置等待时间") tempHandleNum = len(self.browser.window_handles) # 记录之前的窗口位置 try: click_way = int(param["clickWay"]) except: click_way = 0 try: - if click_way == 0: # 用selenium的点击方法 - actions = ActionChains(self.browser) # 实例化一个action对象 - actions.click(element).perform() + newTab = int(param["newTab"]) + except: + newTab = 0 + try: + if xpath.find("point(") >= 0: # 如果xpath中包含point(),说明是相对坐标的点击 + point = xpath.split("point(")[1].split(")")[0].split(",") + x = int(point[0]) + y = int(point[1]) + # try: + # actions = ActionChains(self.browser) # 实例化一个action对象 + # actions.move_to_element(element).perform() + # actions.move_by_offset(x, y).perform() + # actions.click().perform() + # except Exception as e: + script = "document.elementFromPoint(" + str(x) + "," + str(y) + ").click();" + self.browser.execute_script(script) + elif click_way == 0: # 用selenium的点击方法 + try: + actions = ActionChains(self.browser) # 实例化一个action对象 + if newTab == 1: # 在新标签页打开 + # Ctrl + Click + actions.key_down(Keys.CONTROL).click(element).key_up(Keys.CONTROL).perform() + else: + actions.click(element).perform() + except Exception as e: + self.browser.execute_script("arguments[0].scrollIntoView();", element) + try: + actions = ActionChains(self.browser) # 实例化一个action对象 + actions.click(element).perform() + except Exception as e: + self.print_and_log(f"Selenium点击元素{path}失败,将尝试使用JavaScript点击") + self.print_and_log(f"Failed to click element {path} with Selenium, will try to click with JavaScript") + script = 'var result = document.evaluate(`' + path + \ + '`, document, null, XPathResult.ANY_TYPE, null);for(let i=0;i 0: + try: + time.sleep(1.5) + alert = self.browser.switch_to.alert + alertHandleType = int(param["alertHandleType"]) + if alertHandleType == 1: + alert.accept() + self.print_and_log("已点击确认|Clicked OK") + elif alertHandleType == 2: + alert.dismiss() + self.print_and_log("已点击取消|Clicked Cancel") + except Exception as e: + self.print_and_log("找不到弹窗|Cannot find alert") + # 点击后对该元素执行一段JavaScript代码 try: if param["afterJS"] != "": @@ -974,10 +1753,8 @@ class BrowserThread(Thread): self.execute_code(2, param["afterJS"], param["afterJSWaitTime"], element, iframe=param["iframe"]) except: - print("Cannot find element:" + path) - self.recordLog("Cannot find element:" + - path + ", please try to set the wait time before executing this operation") - print("找不到要点击的元素:" + path + ",请尝试在执行此操作前设置等待时间") + self.print_and_log("Cannot find element:" + path) + self.print_and_log("找不到要点击的元素:" + path + ",请尝试在执行此操作前设置等待时间") waitTime = float(param["wait"]) + 0.01 # 点击之后等待 try: waitType = int(param["waitType"]) @@ -995,18 +1772,30 @@ class BrowserThread(Thread): self.history["index"] = self.browser.execute_script( "return history.length") except TimeoutException: - self.browser.execute_script('window.stop()') + try: + self.browser.execute_script('window.stop()') + except: + pass self.history["index"] = self.browser.execute_script( "return history.length") + except Exception as e: + self.print_and_log("History Length Error") + self.history["index"] = 0 else: try: self.history["index"] = self.browser.execute_script( "return history.length") except TimeoutException: - self.browser.execute_script('window.stop()') + try: + self.browser.execute_script('window.stop()') + except: + pass self.history["index"] = self.browser.execute_script( "return history.length") # 如果打开了新窗口,切换到新窗口 + except Exception as e: + self.print_and_log("History Length Error") + self.history["index"] = 0 self.scrollDown(param) # 根据参数配置向下滚动 # rt.end() @@ -1034,10 +1823,14 @@ class BrowserThread(Thread): except: downloadPic = 0 if downloadPic == 1: - download_image(content, "Data/Task_" + - str(self.id) + "/" + self.saveName + "/") + download_image(self, content, "Data/Task_" + + str(self.id) + "/" + self.saveName + "/", element) else: # 普通节点 - content = element.text + if p["splitLine"] == 1: + text = extract_text_from_html(element.get_attribute('outerHTML')) + content = split_text_by_lines(text) + else: + content = element.text elif p["contentType"] == 1: # 只采集当期元素下的文本,不包括子元素 if p["nodeType"] == 2: if element.get_attribute("href") != None: @@ -1059,8 +1852,8 @@ class BrowserThread(Thread): except: downloadPic = 0 if downloadPic == 1: - download_image(content, "Data/Task_" + - str(self.id) + "/" + self.saveName + "/") + download_image(self, content, "Data/Task_" + + str(self.id) + "/" + self.saveName + "/", element) else: command = 'var arr = [];\ var content = arguments[0];\ @@ -1089,44 +1882,70 @@ class BrowserThread(Thread): content = self.browser.title elif p["contentType"] == 7: # 获取整个网页的高度和宽度 - height = self.browser.execute_script( - "return document.body.scrollHeight") - width = self.browser.execute_script( - "return document.body.scrollWidth") + size = self.browser.get_window_size() + width = size["width"] + height = size["height"] # 调整浏览器窗口的大小 self.browser.set_window_size(width, height) element.screenshot("Data/Task_" + str(self.id) + "/" + self.saveName + "/" + str(time.time()) + ".png") + # 截图完成后,将浏览器的窗口大小设置为原来的大小 + self.browser.set_window_size(width, height) elif p["contentType"] == 8: try: + size = self.browser.get_window_size() + width = size["width"] + height = size["height"] screenshot = element.screenshot_as_png screenshot_stream = io.BytesIO(screenshot) # 使用Pillow库打开截图,并转换为灰度图像 image = Image.open(screenshot_stream).convert('L') + temp_name = "OCR_" + str(time.time()) + ".png" + location = "Data/Task_" + \ + str(self.id) + "/" + self.saveName + "/" + temp_name + image.save(location) + ocr = DdddOcr(show_ad=False) + with open(location, 'rb') as f: + image_bytes = f.read() + content = ocr.classification(image_bytes) + os.remove(location) + self.browser.set_window_size(width, height) # 使用Tesseract OCR引擎识别图像中的文本 - text = pytesseract.image_to_string(image, lang='chi_sim+eng') - content = text + # content = pytesseract.image_to_string(image, lang='chi_sim+eng') except Exception as e: + # try: + # self.print_and_log(e) + # self.print_and_log("识别中文失败,尝试只识别英文") + # self.print_and_log("Failed to recognize Chinese, try to recognize English only") + # screenshot = element.screenshot_as_png + # screenshot_stream = io.BytesIO(screenshot) + # # 使用Pillow库打开截图,并转换为灰度图像 + # image = Image.open(screenshot_stream).convert('L') + # # 使用Tesseract OCR引擎识别图像中的文本 + # # content = pytesseract.image_to_string(image, lang='eng') + # except Exception as e: content = "OCR Error" - print("To use OCR, You need to install Tesseract-OCR and add it to the environment variable PATH (need to restart EasySpider after you put in PATH): https://tesseract-ocr.github.io/tessdoc/Installation.html") - if sys.platform == "win32": - print("要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://blog.csdn.net/u010454030/article/details/80515501\nhttps://www.bilibili.com/video/BV1xz4y1b72D/") - elif sys.platform == "darwin": - print(e) - print( - "注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://zhuanlan.zhihu.com/p/146044810") - elif sys.platform == "linux": - print(e) - print( - "注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://zhuanlan.zhihu.com/p/420259031") - else: - print(e) - print("注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://blog.csdn.net/u010454030/article/details/80515501\nhttps://www.bilibili.com/video/BV1xz4y1b72D/") + self.print_and_log(e) + # if sys.platform == "win32": + # self.print_and_log("要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://blog.csdn.net/u010454030/article/details/80515501") + # self.print_and_log("\nhttps://www.bilibili.com/video/BV1GP411y7u4/") + # elif sys.platform == "darwin": + # self.print_and_log( + # "注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://zhuanlan.zhihu.com/p/146044810") + # elif sys.platform == "linux": + # self.print_and_log( + # "注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://zhuanlan.zhihu.com/p/420259031") + # else: + # self.print_and_log("注意以上错误,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中(添加后需重启EasySpider):https://blog.csdn.net/u010454030/article/details/80515501") + # self.print_and_log("\nhttps://www.bilibili.com/video/BV1GP411y7u4/") + # self.print_and_log("To use OCR, You need to install Tesseract-OCR and add it to the environment variable PATH (need to restart EasySpider after you put in PATH): https://tesseract-ocr.github.io/tessdoc/Installation.html") elif p["contentType"] == 9: content = self.execute_code( 2, p["JS"], p["JSWaitTime"], element, iframe=p["iframe"]) - elif p["contentType"] == 12: # 系统命令返回值 + elif p["contentType"] == 12: # 系统命令返回值 content = self.execute_code(1, p["JS"], p["JSWaitTime"]) + elif p["contentType"] == 13: # eval返回值 + content = self.execute_code(6, p["JS"], p["JSWaitTime"]) elif p["contentType"] == 10: # 下拉框选中的值 try: select_element = Select(element) @@ -1140,10 +1959,27 @@ class BrowserThread(Thread): content = select_element.first_selected_option.text except: content = "" + elif p["contentType"] == 14: # 元素属性值 + attribute_name = p["JS"] + try: + content = element.get_attribute(attribute_name) + except: + content = "" + if content == None: + content = "" return content - # 提取数据事件 + def clearOutputParameters(self): + for key in self.outputParameters: + self.outputParameters[key] = "" + self.recordLog("清空输出参数|Clear output parameters") + + # 提取数据操作 def getData(self, param, loopElement, isInLoop=True, parentPath="", index=0): + parentPath = replace_field_values( + parentPath, self.outputParameters, self) + if param["clear"] == 1: + self.clearOutputParameters() try: pageHTML = etree.HTML(self.browser.page_source) except: @@ -1166,36 +2002,57 @@ class BrowserThread(Thread): for p in param["params"]: if p["optimizable"]: try: + relativeXPath = replace_field_values( + p["relativeXPath"], self.outputParameters, self) # 只有当前环境不变变化才可以快速提取数据 if self.browser.iframe_env != p["iframe"]: + # if p["iframe"] or self.browser.iframe_env != p["iframe"]: # 如果是iframe,则不能快速提取数据,主要是各个上下文的iframe切换,但一般不会有人这么做 p["optimizable"] = False continue - # p["relativeXPath"] = p["relativeXPath"].lower() - # p["relativeXPath"] = lowercase_tags_in_xpath(p["relativeXPath"]) + # relativeXPath = relativeXPath.lower() + # relativeXPath = lowercase_tags_in_xpath(relativeXPath) # 已经有text()或@href了,不需要再加 - if p["relativeXPath"].find("/@href") >= 0 or p["relativeXPath"].find("/text()") >= 0 or p["relativeXPath"].find("::text()") >= 0: - xpath = p["relativeXPath"] + content_type = "" + if relativeXPath.find("/@href") >= 0 or relativeXPath.find("/text()") >= 0 or relativeXPath.find( + "::text()") >= 0: + content_type = "" elif p["nodeType"] == 2: - xpath = p["relativeXPath"] + "/@href" + content_type = "//@href" + elif p["nodeType"] == 4: + content_type = "//@src" elif p["contentType"] == 1: - xpath = p["relativeXPath"] + "/text()" + content_type = "/text()" elif p["contentType"] == 0: - xpath = p["relativeXPath"] + "//text()" + content_type = "//text()" + xpath = relativeXPath + content_type if p["relative"]: - # if p["relativeXPath"] == "": + # if relativeXPath == "": # content = [loopElementHTML] # else: # 如果字串里有//即子孙查找,则不动语句 - if p["relativeXPath"].find("//") >= 0: - full_path = "(" + parentPath + \ - xpath + ")" + \ - "[" + str(index + 1) + "]" - content = pageHTML.xpath(full_path) + if relativeXPath.find("//") >= 0: + if xpath.startswith("/"): + full_path = "(" + parentPath + ")" + \ + "[" + str(index + 1) + "]" + \ + relativeXPath + content_type + else: # 如果是id()这种形式,不需要包parentPath + full_path = xpath + try: + content = pageHTML.xpath(full_path) + except: + content = [] + # 如果是id()这种形式,不需要包/html/body + elif not relativeXPath.startswith("/"): + try: + content = loopElementHTML.xpath(xpath) + except: + content = [] else: content = loopElementHTML.xpath( "/html/body/" + loopElementHTML[0][0].tag + xpath) else: - if xpath.find("/body") < 0: + # 如果是id()或(//div)[1]这种形式,不需要包/html/body + if xpath.find("/body") < 0 and xpath.startswith("/"): xpath = "/html/body" + xpath content = pageHTML.xpath(xpath) if len(content) > 0: @@ -1203,57 +2060,66 @@ class BrowserThread(Thread): # 拼接所有文本内容并去掉两边的空白 content = ' '.join(result.strip() for result in content if result.strip()) - if p["nodeType"] == 2: + if p["nodeType"] == 2 or p["nodeType"] == 4: base_url = self.browser.current_url - content = urljoin(base_url, content) # 合并链接相对路径为绝对路径 + # 合并链接相对路径为绝对路径 + content = urljoin(base_url, content) else: content = p["default"] if not self.dataNotFoundKeys[p["name"]]: - print('Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( - p["relativeXPath"], p["name"])) - print("提取数据操作时,字段名 %s 对应XPath %s 未找到,使用默认值,本字段将不再重复报错" % ( - p["name"], p["relativeXPath"])) + self.print_and_log( + 'Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( + relativeXPath, p["name"])) + self.print_and_log( + "提取数据操作时,字段名 %s 对应XPath %s 未找到,使用默认值,本字段将不再重复报错" % ( + p["name"], relativeXPath)) self.dataNotFoundKeys[p["name"]] = True - self.recordLog( - 'Element %s not found, use default' % p["relativeXPath"]) except Exception as e: if not self.dataNotFoundKeys[p["name"]]: - print('Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( - p["relativeXPath"], p["name"])) - print("提取数据操作时,字段名 %s 对应XPath %s 未找到(请查看原因,如是否翻页太快页面元素未加载出来),使用默认值,本字段将不再重复报错" % ( - p["name"], p["relativeXPath"])) + self.print_and_log( + 'Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( + relativeXPath, p["name"])) + self.print_and_log( + "提取数据操作时,字段名 %s 对应XPath %s 未找到(请查看原因,如是否翻页太快页面元素未加载出来),使用默认值,本字段将不再重复报错" % ( + p["name"], relativeXPath)) self.dataNotFoundKeys[p["name"]] = True - self.recordLog( - 'Element %s not found, use default' % p["relativeXPath"]) - self.outputParameters[p["name"]] = content - + try: + self.outputParameters[p["name"]] = content + except: + self.outputParameters[p["name"]] = p["default"] # 对于不能优化的操作,使用selenium执行 for p in param["params"]: if not p["optimizable"]: content = "" + relativeXPath = replace_field_values( + p["relativeXPath"], self.outputParameters, self) if not (p["contentType"] == 5 or p["contentType"] == 6): # 如果不是页面标题或URL,去找元素 try: - # p["relativeXPath"] = p["relativeXPath"].lower() - # p["relativeXPath"] = lowercase_tags_in_xpath(p["relativeXPath"]) + # relativeXPath = relativeXPath.lower() + # relativeXPath = lowercase_tags_in_xpath(relativeXPath) if p["relative"]: # 是否相对xpath - if p["relativeXPath"] == "": # 相对xpath有时候就是元素本身,不需要二次查找 + if relativeXPath == "": # 相对xpath有时候就是元素本身,不需要二次查找 element = loopElement else: # 如果字串里有//即子孙查找,则不动语句 - if p["relativeXPath"].find("//") >= 0: - full_path = "(" + parentPath + \ - p["relativeXPath"] + ")" + \ - "[" + str(index + 1) + "]" + if relativeXPath.find("//") >= 0: + # full_path = "(" + parentPath + \ + # relativeXPath + ")" + \ + # "[" + str(index + 1) + "]" + full_path = "(" + parentPath + ")" + \ + "[" + str(index + 1) + "]" + \ + relativeXPath element = self.browser.find_element( By.XPATH, full_path, iframe=p["iframe"]) else: element = loopElement.find_element(By.XPATH, - p["relativeXPath"][1:]) + relativeXPath[1:]) else: element = self.browser.find_element( - By.XPATH, p["relativeXPath"], iframe=p["iframe"]) - except (NoSuchElementException, InvalidSelectorException, StaleElementReferenceException): # 找不到元素的时候,使用默认值 - # print(p) + By.XPATH, relativeXPath, iframe=p["iframe"]) + except ( + NoSuchElementException, InvalidSelectorException, StaleElementReferenceException) as e: # 找不到元素的时候,使用默认值 + # self.print_and_log(p) try: content = p["default"] except Exception as e: @@ -1261,30 +2127,32 @@ class BrowserThread(Thread): self.outputParameters[p["name"]] = content try: if not self.dataNotFoundKeys[p["name"]]: - print('Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( - p["relativeXPath"], p["name"])) - print("提取数据操作时,字段名 %s 对应XPath %s 未找到,使用默认值,本字段将不再重复报错" % ( - p["name"], p["relativeXPath"])) + self.print_and_log( + 'Element %s not found with parameter name %s when extracting data, use default, this error will only show once' % ( + relativeXPath, p["name"])) + self.print_and_log( + "提取数据操作时,字段名 %s 对应XPath %s 未找到,使用默认值,本字段将不再重复报错" % ( + p["name"], relativeXPath)) self.dataNotFoundKeys[p["name"]] = True - self.recordLog( - 'Element %s not found, use default' % p["relativeXPath"]) except: pass continue except TimeoutException: # 超时的时候设置超时值 - self.Log('Time out after set seconds when getting data') - self.recordLog( + self.print_and_log( 'Time out after set seconds when getting data') - self.browser.execute_script('window.stop()') + try: + self.browser.execute_script('window.stop()') + except: + pass if p["relative"]: # 是否相对xpath - if p["relativeXPath"] == "": # 相对xpath有时候就是元素本身,不需要二次查找 + if relativeXPath == "": # 相对xpath有时候就是元素本身,不需要二次查找 element = loopElement else: element = loopElement.find_element(By.XPATH, - p["relativeXPath"][1:]) + relativeXPath[1:]) else: element = self.browser.find_element( - By.XPATH, p["relativeXPath"], iframe=p["iframe"]) + By.XPATH, relativeXPath, iframe=p["iframe"]) # rt.end() else: element = self.browser.find_element( @@ -1295,42 +2163,42 @@ class BrowserThread(Thread): content = self.get_content(p, element) except StaleElementReferenceException: # 发生找不到元素的异常后,等待几秒重新查找 self.recordLog( - 'StaleElementReferenceException: '+p["relativeXPath"]) + 'StaleElementReferenceException: ' + relativeXPath) time.sleep(3) try: if p["relative"]: # 是否相对xpath - if p["relativeXPath"] == "": # 相对xpath有时候就是元素本身,不需要二次查找 + if relativeXPath == "": # 相对xpath有时候就是元素本身,不需要二次查找 element = loopElement self.recordLog( 'StaleElementReferenceException: loopElement') else: element = loopElement.find_element(By.XPATH, - p["relativeXPath"][1:]) + relativeXPath[1:]) self.recordLog( 'StaleElementReferenceException: loopElement+relativeXPath') else: element = self.browser.find_element( - By.XPATH, p["relativeXPath"], iframe=p["iframe"]) + By.XPATH, relativeXPath, iframe=p["iframe"]) self.recordLog( 'StaleElementReferenceException: relativeXPath') content = self.get_content(p, element) except StaleElementReferenceException: self.recordLog( - 'StaleElementReferenceException: '+p["relativeXPath"]) + 'StaleElementReferenceException: ' + relativeXPath) continue # 再出现类似问题直接跳过 self.outputParameters[p["name"]] = content self.execute_code( 2, p["afterJS"], p["afterJSWaitTime"], element, iframe=p["iframe"]) # 执行后置JS - line = new_line(self.outputParameters, self.maxViewLength, self.outputParametersRecord) - self.OUTPUT.append(line) - # rt.end() - + if param["recordASField"] > 0 and param["newLine"]: + line = new_line(self.outputParameters, + self.maxViewLength, self.outputParametersRecord) + self.OUTPUT.append(line) if __name__ == '__main__': - from multiprocessing import freeze_support - freeze_support() # 防止无限死循环多开 + # 如果需要调试程序,请在命令行参数中加入--keyboard 0 来禁用键盘监听以提升调试速度 + # If you need to debug the program, please add --keyboard 0 in the command line parameters to disable keyboard listening to improve debugging speed config = { - "id": [0], + "ids": [0], "saved_file_name": "", "user_data": False, "config_folder": "", @@ -1338,83 +2206,65 @@ if __name__ == '__main__': "read_type": "remote", "headless": False, "server_address": "http://localhost:8074", - "version": "0.3.5", + "keyboard": True, # 是否监听键盘输入 + "pause_key": "p", # 暂停键 + "version": "0.6.0", } c = Config(config) print(c) - options = Options() + options = webdriver.ChromeOptions() driver_path = "chromedriver.exe" - import platform print(sys.platform, platform.architecture()) - option = webdriver.ChromeOptions() - if not os.path.exists(os.getcwd()+"/Data"): - os.mkdir(os.getcwd()+"/Data") + if not os.path.exists(os.getcwd() + "/Data"): + os.mkdir(os.getcwd() + "/Data") if sys.platform == "darwin" and platform.architecture()[0] == "64bit": options.binary_location = "EasySpider.app/Contents/Resources/app/chrome_mac64.app/Contents/MacOS/Google Chrome" - # MacOS需要用option而不是options! - option.binary_location = "EasySpider.app/Contents/Resources/app/chrome_mac64.app/Contents/MacOS/Google Chrome" - option.add_extension("EasySpider.app/Contents/Resources/app/XPathHelper.crx") - options.add_extension("EasySpider.app/Contents/Resources/app/XPathHelper.crx") + options.add_extension( + "EasySpider.app/Contents/Resources/app/XPathHelper.crx") driver_path = "EasySpider.app/Contents/Resources/app/chromedriver_mac64" - # options.binary_location = "chrome_mac64.app/Contents/MacOS/Google Chrome" - # # MacOS需要用option而不是options! - # option.binary_location = "chrome_mac64.app/Contents/MacOS/Google Chrome" - # driver_path = os.getcwd()+ "/chromedriver_mac64" print(driver_path) - elif os.path.exists(os.getcwd()+"/EasySpider/resources"): # 打包后的路径 + if c.config_folder == "": + c.config_folder = os.path.expanduser( + "~/Library/Application Support/EasySpider/") + elif os.path.exists(os.getcwd() + "/EasySpider/resources"): # 打包后的路径 print("Finding chromedriver in EasySpider", - os.getcwd()+"/EasySpider") + os.getcwd() + "/EasySpider") if sys.platform == "win32" and platform.architecture()[0] == "32bit": options.binary_location = os.path.join( os.getcwd(), "EasySpider/resources/app/chrome_win32/chrome.exe") # 指定chrome位置 driver_path = os.path.join( os.getcwd(), "EasySpider/resources/app/chrome_win32/chromedriver_win32.exe") - option.add_extension("EasySpider/resources/app/XPathHelper.crx") options.add_extension("EasySpider/resources/app/XPathHelper.crx") elif sys.platform == "win32" and platform.architecture()[0] == "64bit": options.binary_location = os.path.join( os.getcwd(), "EasySpider/resources/app/chrome_win64/chrome.exe") driver_path = os.path.join( os.getcwd(), "EasySpider/resources/app/chrome_win64/chromedriver_win64.exe") - option.add_extension("EasySpider/resources/app/XPathHelper.crx") options.add_extension("EasySpider/resources/app/XPathHelper.crx") elif sys.platform == "linux" and platform.architecture()[0] == "64bit": options.binary_location = "EasySpider/resources/app/chrome_linux64/chrome" driver_path = "EasySpider/resources/app/chrome_linux64/chromedriver_linux64" - option.add_extension("EasySpider/resources/app/XPathHelper.crx") options.add_extension("EasySpider/resources/app/XPathHelper.crx") else: print("Unsupported platform") sys.exit() print("Chrome location:", options.binary_location) print("Chromedriver location:", driver_path) - # elif os.getcwd().find("ExecuteStage") >= 0: # 如果直接执行 - # print("Finding chromedriver in ./Chrome", - # os.getcwd()+"/Chrome") - # options.binary_location = "./Chrome/chrome.exe" # 指定chrome位置 - # # option.binary_location = "C:\\Users\\q9823\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe" - # driver_path = "./Chrome/chromedriver.exe" - elif os.path.exists(os.getcwd()+"/../ElectronJS"): + elif os.path.exists(os.getcwd() + "/../ElectronJS"): # 软件dev用 print("Finding chromedriver in EasySpider", - os.getcwd()+"/ElectronJS") - option.binary_location = "../ElectronJS/chrome_win64/chrome.exe" # 指定chrome位置 + os.getcwd() + "/ElectronJS") + options.binary_location = "../ElectronJS/chrome_win64/chrome.exe" # 指定chrome位置 driver_path = "../ElectronJS/chrome_win64/chromedriver_win64.exe" - option.add_extension("../ElectronJS/XPathHelper.crx") + options.add_extension("../ElectronJS/XPathHelper.crx") else: options.binary_location = "./chrome.exe" # 指定chrome位置 driver_path = "./chromedriver.exe" - option.add_extension("XPathHelper.crx") + options.add_extension("XPathHelper.crx") - option.add_experimental_option( + options.add_experimental_option( 'excludeSwitches', ['enable-automation']) # 以开发者模式 - options.add_argument('-ignore-certificate-errors') - options.add_argument('-ignore -ssl-errors') - option.add_argument('-ignore-certificate-errors') - option.add_argument('-ignore -ssl-errors') - # user_data_dir = r'' # 注意没有Default! - # options.add_argument('--user-data-dir='+p) # 总结: # 0. 带Cookie需要用userdatadir @@ -1425,126 +2275,198 @@ if __name__ == '__main__': try: with open(c.config_folder + c.config_file_name, "r", encoding='utf-8') as f: config = json.load(f) + print("Config file path: " + + c.config_folder + c.config_file_name) absolute_user_data_folder = config["absolute_user_data_folder"] - print("\nAbsolute_user_data_folder:", - absolute_user_data_folder, "\n") except: pass - if c.user_data: - option.add_argument( - f'--user-data-dir={absolute_user_data_folder}') # TMALL 反扒 - option.add_argument("--profile-directory=Default") - options.add_argument( - f'--user-data-dir={absolute_user_data_folder}') # TMALL 反扒 - options.add_argument("--profile-directory=Default") + + options.add_argument( + "--disable-blink-features=AutomationControlled") # TMALL 反扒 + + options.add_argument('-ignore-certificate-errors') + options.add_argument('-ignore -ssl-errors') if c.headless: print("Headless mode") print("无头模式") - option.add_argument("--headless") options.add_argument("--headless") - # options.add_argument( - # '--user-data-dir=C:\\Users\\q9823\\AppData\\Local\\Google\\Chrome\\User Data') # TMALL 反扒 - option.add_argument( - "--disable-blink-features=AutomationControlled") # TMALL 反扒 - options.add_argument( - "--disable-blink-features=AutomationControlled") # TMALL 反扒 + tmp_options = [] + for id in c.ids: + tmp_options.append({"options": copy.deepcopy(options), "tmp_user_data_folder": ""}) + + if c.user_data: + tmp_user_folder_parent = os.path.join(os.getcwd(), "TempUserDataFolder") + if not os.path.exists(tmp_user_folder_parent): + os.mkdir(tmp_user_folder_parent) + characters = string.ascii_letters + string.digits + for i in range(len(c.ids)): + id = c.ids[i] + # 从字符集中随机选择字符构成字符串 + random_string = ''.join(random.choice(characters) for i in range(10)) + tmp_user_data_folder = os.path.join(tmp_user_folder_parent, "user_data_" + str(id) + "_" + str(time.time()).replace(".","") + "_" + random_string) + tmp_options[i]["tmp_user_data_folder"] = tmp_user_data_folder + if os.path.exists(tmp_user_data_folder): + try: + shutil.rmtree(tmp_user_data_folder) + except: + pass + print(f"Copying user data folder to: {tmp_user_data_folder}, please wait...") + print(f"正在复制用户信息目录到: {tmp_user_data_folder},请稍等...") + if os.path.exists(absolute_user_data_folder): + try: + shutil.copytree(absolute_user_data_folder, tmp_user_data_folder) + print("User data folder copied successfully, if you exit the program before it finishes, please delete the temporary user data folder manually.") + print("用户信息目录复制成功,如果程序在运行过程中被手动退出,请手动删除临时用户信息目录。") + except: + tmp_user_data_folder = absolute_user_data_folder + print("Copy user data folder failed, use the original folder.") + print("复制用户信息目录失败,使用原始目录。") + else: + tmp_user_data_folder = absolute_user_data_folder + print("Cannot find user data folder, create a new folder.") + print("未找到用户信息目录,创建新目录。") + options = tmp_options[i]["options"] + options.add_argument( + f'--user-data-dir={tmp_user_data_folder}') # TMALL 反扒 + options.add_argument("--profile-directory=Default") + print( + "如果报错Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally,说明有之前运行的Chrome实例没有正常关闭,请关闭之前打开的所有Chrome实例后再运行程序即可。") + print( + "If you get an error Selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally, it means that there is a Chrome instance that was not closed properly before, please close all Chrome instances that were opened before running the program.") threads = [] - for i in c.id: - # print(options) - print("id: ", i) + for i in range(len(c.ids)): + id = c.ids[i] + options = tmp_options[i]["options"] + print("id: ", id) if c.read_type == "remote": print("remote") content = requests.get( - c.server_address + "/queryExecutionInstance?id=" + str(i)) + c.server_address + "/queryExecutionInstance?id=" + str(id)) service = json.loads(content.text) # 加载服务信息 else: print("local") - with open("execution_instances/" + str(i) + ".json", 'r', encoding='utf-8') as f: + local_folder = os.path.join(os.getcwd(), "execution_instances") + if sys.platform == "darwin": + user_folder = os.path.expanduser( + "~/Library/Application Support/EasySpider/") + local_folder = os.path.join(user_folder, "execution_instances") + file_path = os.path.join(local_folder, str(id) + ".json") + with open(file_path, 'r', encoding='utf-8') as f: content = f.read() service = json.loads(content) # 加载服务信息 - print("Task Name:", service["name"]) - print("任务名称:", service["name"]) + try: + print("Task Name:", service["name"]) + print("任务名称:", service["name"]) + except: + print(f"Cannot find task with id: {str(id)}, please check whether {str(id)}.json exists in the 'execution_instances' folder.") + print(f"未找到id为{str(id)}的任务,请检查'execution_instances'文件夹中是否存在{str(id)}.json文件。") + continue try: cloudflare = service["cloudflare"] except: cloudflare = 0 if cloudflare == 0: + options.add_argument('log-level=3') # 隐藏日志 + path = os.path.join(os.path.abspath("./"), "Data", "Task_" + str(id)) + print("Data path:", path) options.add_experimental_option("prefs", { # 设置文件下载路径 - "download.default_directory": "Data/Task_" + str(i), + "download.default_directory": path, "download.prompt_for_download": False, # 禁止下载提示框 "plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], "download.directory_upgrade": True, "download.extensions_to_open": "applications/pdf", - "plugins.always_open_pdf_externally": True # 总是在外部程序中打开PDF - }) - option.add_experimental_option("prefs", { - # 设置文件下载路径 - "download.default_directory": "Data/Task_" + str(i), - "download.prompt_for_download": False, # 禁止下载提示框 - "plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], - "download.directory_upgrade": True, - "download.extensions_to_open": "applications/pdf", - "plugins.always_open_pdf_externally": True # 总是在外部程序中打开PDF + "plugins.always_open_pdf_externally": True, # 总是在外部程序中打开PDF + "safebrowsing_for_trusted_sources_enabled": False, + "safebrowsing.enabled": False, + 'safebrowsing.disable_download_protection': True, + 'profile.default_content_settings.popups': 0, }) try: if service["environment"] == 1: - option.add_experimental_option( - 'mobileEmulation', {'deviceName': 'iPhone X'}) # 模拟iPhone X浏览 options.add_experimental_option( 'mobileEmulation', {'deviceName': 'iPhone X'}) # 模拟iPhone X浏览 except: pass - browser_t = MyChrome( - options=options, chrome_options=option, executable_path=driver_path) + try: + browser = service["browser"] + except: + browser = "chrome" + if browser == "chrome": + selenium_service = Service(executable_path=driver_path) + browser_t = MyChrome(service=selenium_service, options=options) + elif browser == "edge": + from selenium.webdriver.edge.service import Service as EdgeService + from selenium.webdriver.edge.options import Options as EdgeOptions + from myChrome import MyEdge + selenium_service = EdgeService(executable_path="msedgedriver.exe") + options = EdgeOptions() + options.use_chromium = True + options.add_argument("--ie-mode") + options.add_argument("ie.edgepath=msedge.exe") + browser_t = MyEdge(service=selenium_service, options=options) elif cloudflare == 1: - browser_t = MyUCChrome( - options=options, chrome_options=option, driver_executable_path=driver_path) - print("Pass Cloudflare Mode") - print("过Cloudflare验证模式") + if sys.platform == "win32": + options.binary_location = "C:\\Program Files\\Google\\Chrome Beta\\Application\\chrome.exe" # 需要用自己的浏览器 + browser_t = MyUCChrome( + options=options, driver_executable_path=driver_path) + links = list(filter(isnotnull, service["links"].split("\n"))) + # open page in new tab + browser_t.execute_script( + 'window.open("' + links[0] + '","_blank");') + time.sleep(5) # wait until page has loaded + browser_t.switch_to.window( + browser_t.window_handles[1]) # switch to new tab + # browser_t = uc.Chrome() + else: + print("Cloudflare模式只支持Windows x64平台。") + print( + "Cloudflare Mode only support on Windows x64 platform.") + sys.exit() event = Event() event.set() - thread = BrowserThread(browser_t, i, service, - c.version, event, c.saved_file_name, config=config) - print("Thread with task id: ", i, " is created") + thread = BrowserThread(browser_t, id, service, + c.version, event, c.saved_file_name, config=config, option=tmp_options[i]) + print("Thread with task id: ", id, " is created") threads.append(thread) thread.start() # Set the pause operation - # if sys.platform != "linux": + # if sys.platform != "linux": # time.sleep(3) - # print("\n\n----------------------------------") - # print("正在运行任务,长按键盘p键可暂停任务的执行以便手工操作浏览器如输入验证码;如果想恢复任务的执行,请再次长按p键。") - # print("Running task, long press 'p' to pause the task for manual operation of the browser such as entering the verification code; If you want to resume the execution of the task, please long press 'p' again.") - # print("----------------------------------\n\n") # Thread(target=check_pause, args=("p", event)).start() # else: time.sleep(3) - press_time = {"duration": 0, "is_pressed": False} + if c.pause_key == "p": + try: + pause_key = service["pauseKey"] + except: + pause_key = "p" + else: + pause_key = c.pause_key + press_time = {"duration": 0, "is_pressed": False, "pause_key": pause_key} print("\n\n----------------------------------") - print("正在运行任务,长按键盘p键可暂停任务的执行以便手工操作浏览器如输入验证码;如果想恢复任务的执行,请再次长按p键。") - print("Running task, long press 'p' to pause the task for manual operation of the browser such as entering the verification code; If you want to resume the execution of the task, please long press 'p' again.") + print( + "正在运行任务,长按键盘" + pause_key + "键可暂停任务的执行以便手工操作浏览器如输入验证码;如果想恢复任务的执行,请再次长按" + pause_key + "键。") + print( + "Running task, long press '" + pause_key + "' to pause the task for manual operation of the browser such as entering the verification code; If you want to resume the execution of the task, please long press '" + pause_key + "' again.") print("----------------------------------\n\n") + # if cloudflare: + # print("过Cloudflare验证模式有时候会不稳定,如果无法通过验证则需要隔几分钟重试一次,或者可以更换新的用户信息文件夹再执行任务。") + # print("Passing the Cloudflare verification mode is sometimes unstable. If the verification fails, you need to try again every few minutes, or you can change to a new user information folder and then execute the task.") # 使用监听器监听键盘输入 - try: - with Listener(on_press=on_press_creator(press_time, event), on_release=on_release_creator(event, press_time)) as listener: + try: + if c.keyboard: + with Listener(on_press=on_press_creator(press_time, event), + on_release=on_release_creator(event, press_time)) as listener: listener.join() - except: - pass - # print("您的操作系统不支持暂停功能。") - # print("Your operating system does not support the pause function.") - - - # print("线程长度:", len(threads) ) - + except: + pass + # print("您的操作系统不支持暂停功能。") + # print("Your operating system does not support the pause function.") + for thread in threads: print() thread.join() - - for thread in threads: - thread.browser.quit() - # print("Thread with task id: ", thread.id, " is closed") - print("程序已运行完成,请手动关闭此窗口。") - print("The program has finished running, please manually close this window.") diff --git a/.temp_to_pub/EasySpider_Linux_x64/myCode.py b/.temp_to_pub/EasySpider_Linux_x64/myCode.py new file mode 100644 index 0000000..36245ed --- /dev/null +++ b/.temp_to_pub/EasySpider_Linux_x64/myCode.py @@ -0,0 +1,58 @@ +""" +这是一个示例代码文件,可以直接在这里写Python代码,然后在程序中的exec操作中调用。如果此文件名称为myCode.py,请将此文件放置在EasySpider程序目录下(和Data/文件夹同级),那么在程序中的exec操作中可以直接写outside:myCode.py来调用此文件中的代码,示例: + +1. 用self.browser表示当前操作的浏览器,可直接用selenium的API进行操作,如self.browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)即可滚动到页面最下方。 +2. 自定义一个全局变量:self.myVar = 1 +3. 操纵上面定义的全局变量:self.myVar = self.myVar + 1 +4. 打印上面定义的全局变量:print(self.myVar) +5. 将自定义变量的值赋值为某个字段提取的值:self.myVar = self.outputParameters["字段名"] +6. 修改某个字段提取的值:self.outputParameters["字段名"] = "新值" + +对于更加复杂的操作,请直接下载源代码并编译执行。 + +This is a sample code snippet file. You can directly write Python code here, and then call it in the program using an `exec` operation. If this file is named myCode.py, please place this file under the EasySpider program directory (at the same level as the Data/ folder). Then, in the program's `exec` operation, you can directly write outside:myCode.py to invoke the code from this file. Examples: + +1. Use self.browser to refer to the current browser being operated on. You can directly utilize the selenium API to perform actions. For instance, self.browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) will scroll to the bottom of the page. +2. Define a global variable: self.myVar = 1 +3. Manipulate the above-defined global variable: self.myVar = self.myVar + 1 +4. Print the above-defined global variable: print(self.myVar) +5. Assign a value to the custom variable from a value extracted for some field: self.myVar = self.outputParameters["field name"] +6. Modify the value extracted for some field: self.outputParameters["field name"] = "new value" + +For more complex operations, please download the source code and compile it for execution. +""" + +# 请在下面编写你的代码,不要有代码缩进!!! | Please write your code below, do not indent the code!!! + +# 导包 | Import packages +from selenium.common.exceptions import ElementClickInterceptedException + +# 定义一个函数 | Define a function +def test(n = 0): + for i in range(0, n): + if i % 2 == 0: + print(i) + return "test" + +# 异常捕获 | Exception capture +try: + # 使用XPath定位元素并点击浏览器中元素 | Use XPath to locate the element and click the element in the browser + element = self.browser.find_element(By.XPATH, "//*[contains(@class, 'LeftSide_menu_list__qXCeM')]/div[1]/a[1]") # 这里请忽略IDE语法报错如找不到self的报错,因为代码是嵌入到程序中的,IDE无法识别self变量和By变量是正常的 | Please ignore the warning reported by the IDE such as "'self' is not defined", because the code is embedded in the program, and the IDE cannot recognize that the self variable and By variable are normal + actions = ActionChains(self.browser) + actions.click(element).perform() + print("点击成功|Click success") +except ElementClickInterceptedException: + # 如果元素被遮挡,点击失败 + print("元素被遮挡,无法点击|The element is blocked and cannot be clicked") +except Exception as e: + # 打印其他异常 + print("发生了一个异常|An exception occurred", e) +finally: + # 测试函数 | Test function + self.a = 1 + print("a = ", self.a) + self.a = self.a + 1 + print("a = ", self.a) + print("All parameters:", self.outputParameters) + print(test(3)) + print("执行完毕|Execution completed") diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/115.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/115.json index 64b21dd..fbbfd19 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/115.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/115.json @@ -1,25 +1,49 @@ { "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, 7:14:50 AM", + "name": "Dynamic Iframe", + "url": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "links": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "create_time": "7/8/2023, 8:43:14 AM", + "update_time": "7/15/2023, 8:05:33 AM", "version": "0.3.5", "saveThreshold": 10, "cloudflare": 0, "environment": 0, + "maxViewLength": 15, + "outputFormat": "xlsx", + "saveName": "地震Info", "containJudge": false, - "desc": "https://music.163.com/#/discover/toplist?id=71384707", + "desc": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", "inputParameters": [ { "id": 0, "name": "urlList_0", "nodeId": 1, "nodeName": "打开网页", - "value": "https://music.163.com/#/discover/toplist?id=71384707", + "value": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", "desc": "要采集的网址列表,多行以\\n分开", - "type": "string", - "exampleValue": "https://music.163.com/#/discover/toplist?id=71384707" + "type": "text", + "exampleValue": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history" + }, + { + "id": 1, + "name": "inputText_1", + "nodeName": "输入文字", + "nodeId": 3, + "desc": "要输入的文本,如京东搜索框输入:电脑", + "type": "text", + "exampleValue": "1", + "value": "1" + }, + { + "id": 2, + "name": "loopTimes_循环_2", + "nodeId": 5, + "nodeName": "循环", + "desc": "循环循环执行的次数(0代表无限循环)", + "type": "int", + "exampleValue": 0, + "value": 0 } ], "outputParameters": [ @@ -27,232 +51,105 @@ "id": 0, "name": "参数1_文本", "desc": "", - "type": "string", - "exampleValue": "Nocturne No. 2 in E Flat Major, Op. 9, No. 2" + "type": "double", + "recordASField": 1, + "exampleValue": "5.0" }, { "id": 1, "name": "参数2_文本", "desc": "", - "type": "string", - "exampleValue": "作曲 : Frédéric François Chopin纯音乐,请欣赏" + "type": "datetime", + "recordASField": 1, + "exampleValue": "2023-06-2912:58:00" }, { "id": 2, - "name": "参数3_链接文本", + "name": "参数3_文本", "desc": "", - "type": "string", - "exampleValue": "" + "type": "text", + "recordASField": 1, + "exampleValue": "37.10" }, { "id": 3, - "name": "参数4_链接地址", + "name": "参数4_文本", "desc": "", - "type": "string", - "exampleValue": "/user/home?id=6622403" + "type": "text", + "recordASField": 1, + "exampleValue": "71.85" }, { "id": 4, - "name": "参数5_图片地址", + "name": "参数5_文本", "desc": "", - "type": "string", - "exampleValue": "http://p2.music.126.net/XM9AGb0vN4OSKK4WeZM7aA==/109951165633941106.jpg?param=50y50" + "type": "int", + "recordASField": 1, + "exampleValue": "140" }, { "id": 5, - "name": "参数6_文本", + "name": "参数1_页面标题", "desc": "", - "type": "string", - "exampleValue": ":建议这种纯音乐,小编在歌词中做简介" + "type": "text", + "recordASField": 1, + "exampleValue": "塔吉克斯坦" }, { "id": 6, - "name": "参数7_链接文本", + "name": "参数7_链接地址", "desc": "", - "type": "string", - "exampleValue": "新鑫曼巴" + "type": "text", + "recordASField": 1, + "exampleValue": "https://news.ceic.ac.cn/CC20230629125800.html" }, { "id": 7, - "name": "参数8_链接地址", + "name": "参数8_文本", "desc": "", - "type": "string", - "exampleValue": "/user/home?id=6622403" + "type": "text", + "recordASField": 1, + "exampleValue": "震级(M)" }, { "id": 8, - "name": "参数9_图片地址", + "name": "参数9_文本", "desc": "", - "type": "string", - "exampleValue": "http://p5.music.126.net/obj/wovDmcKXw6PCn2_CmsOk/17941162599/305d/0dee/968a/22f0de72becf0485ecac1d6a5898825a.png" + "type": "text", + "recordASField": 1, + "exampleValue": "发震时刻(UTC+8)" }, { "id": 9, "name": "参数10_文本", "desc": "", - "type": "string", - "exampleValue": "2016年4月18日" + "type": "text", + "recordASField": 1, + "exampleValue": "纬度(°)" }, { "id": 10, - "name": "参数11_链接文本", + "name": "参数11_文本", "desc": "", - "type": "string", - "exampleValue": "删除" + "type": "text", + "recordASField": 1, + "exampleValue": "经度(°)" }, { "id": 11, - "name": "参数12_链接地址", + "name": "参数12_文本", "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" + "type": "text", + "recordASField": 1, + "exampleValue": "深度(千米)" }, { "id": 12, "name": "参数13_文本", "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 13, - "name": "参数14_链接文本", - "desc": "", - "type": "string", - "exampleValue": " (29844)" - }, - { - "id": 14, - "name": "参数15_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 15, - "name": "参数16_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 16, - "name": "参数17_链接文本", - "desc": "", - "type": "string", - "exampleValue": "回复" - }, - { - "id": 17, - "name": "参数18_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 18, - "name": "参数19_文本", - "desc": "", - "type": "string", - "exampleValue": ":有次我在琴房练琴,练的是一首通俗歌曲改编的钢琴曲。正当我沉醉于自己的琴声时,隔壁忽然传来这首夜曲,那一刻我突然觉得自己练的曲子简直是没法听,于是后半段就没练,坐在琴房听隔壁弹了一个小时夜曲。" - }, - { - "id": 19, - "name": "参数20_文本", - "desc": "", - "type": "string", - "exampleValue": "◆" - }, - { - "id": 20, - "name": "参数21_文本", - "desc": "", - "type": "string", - "exampleValue": "◆" - }, - { - "id": 21, - "name": "参数22_文本", - "desc": "", - "type": "string", - "exampleValue": "2016年4月24日" - }, - { - "id": 22, - "name": "参数23_链接文本", - "desc": "", - "type": "string", - "exampleValue": "删除" - }, - { - "id": 23, - "name": "参数24_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 24, - "name": "参数25_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 25, - "name": "参数26_链接文本", - "desc": "", - "type": "string", - "exampleValue": " (7809)" - }, - { - "id": 26, - "name": "参数27_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 27, - "name": "参数28_文本", - "desc": "", - "type": "string", - "exampleValue": "|" - }, - { - "id": 28, - "name": "参数29_链接文本", - "desc": "", - "type": "string", - "exampleValue": "回复" - }, - { - "id": 29, - "name": "参数30_链接地址", - "desc": "", - "type": "string", - "exampleValue": "javascript:void(0)" - }, - { - "id": 30, - "name": "参数31_图片地址", - "desc": "", - "type": "string", - "exampleValue": "http://s1.music.126.net/style/web2/emt/emoji_13.png" - }, - { - "id": 31, - "name": "参数32_图片地址", - "desc": "", - "type": "string", - "exampleValue": "https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/21892874340/50e6/e81d/5292/2d693cbb98954e28d4d9fdb11be99a8b.png" - }, - { - "id": 32, - "name": "参数33_链接文本", - "desc": "", - "type": "string", - "exampleValue": "网易云音乐" + "type": "text", + "recordASField": 1, + "exampleValue": "参考位置" } ], "graph": [ @@ -263,13 +160,14 @@ "type": -1, "option": 0, "title": "root", - "sequence": [1, 10, 11, 12], + "sequence": [1, 3, 4, 5], "parameters": { "history": 1, "tabIndex": 0, "useLoop": false, "xpath": "", - "wait": 0 + "wait": 0, + "waitType": 0 }, "isInLoop": false }, @@ -292,12 +190,13 @@ "beforeJSWaitTime": 0, "afterJS": "", "afterJSWaitTime": 0, - "url": "https://music.163.com/#/discover/toplist?id=71384707", - "links": "https://music.163.com/#/discover/toplist?id=71384707", - "maxWaitTime": 100, + "url": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "links": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history", + "maxWaitTime": 10, "scrollType": 0, "scrollCount": 1, - "scrollWaitTime": 1 + "scrollWaitTime": 1, + "cookies": "" } }, { @@ -305,16 +204,165 @@ "index": 2, "parentId": 0, "type": 0, - "option": 2, - "title": "点击元素", + "option": 3, + "title": "提取数据", "sequence": [], "isInLoop": false, "position": 1, "parameters": { - "history": 4, + "history": 5, "tabIndex": -1, "useLoop": false, - "xpath": "//*[contains(@class, \"user\")]", + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "paras": [ + { + "nodeType": 0, + "contentType": 6, + "relative": false, + "name": "参数1_页面标题", + "desc": "", + "extractType": 0, + "relativeXPath": "/html/body/iframe[1]", + "allXPaths": [ + "/html/body/iframe[1]", + "//iframe[contains(., '')]", + "id(\"myIframe\")", + "/html/body/iframe[last()-1]" + ], + "exampleValues": [{ "num": 0, "value": "Dynamic Iframe" }], + "unique_index": "14hqdlhesn6ljt6eja8", + "iframe": false, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 1, + "contentType": 0, + "relative": false, + "name": "参数1_链接文本", + "desc": "", + "extractType": 0, + "relativeXPath": "/html/body/div[1]/div[3]/div[1]/div[1]/div[1]/form[1]/div[5]/a[1]", + "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" + ], + "exampleValues": [{ "num": 0, "value": "查询" }], + "unique_index": "gxhcdetmmgcljt6evon", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + }, + { + "nodeType": 0, + "contentType": 5, + "relative": false, + "name": "参数1_页面网址", + "desc": "", + "extractType": 0, + "relativeXPath": "/html/body/iframe[1]", + "allXPaths": [ + "/html/body/iframe[1]", + "//iframe[contains(., '')]", + "id(\"myIframe\")", + "/html/body/iframe[last()-1]" + ], + "exampleValues": [ + { + "num": 0, + "value": "http://localhost:8074/taskGrid/test_pages/iframe.html?address=http://www.ceic.ac.cn/history" + } + ], + "unique_index": "e663xi39mb4ljt6em4l", + "iframe": false, + "default": "", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ] + } + }, + { + "id": 2, + "index": 3, + "parentId": 0, + "type": 0, + "option": 4, + "title": "输入文字", + "sequence": [], + "isInLoop": false, + "position": 1, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[@id=\"weidu1\"]", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "value": "1", + "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": 4, + "parentId": 0, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": false, + "position": 2, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[@id=\"search\"]", "iframe": true, "wait": 2, "waitType": 0, @@ -327,30 +375,31 @@ "scrollWaitTime": 1, "clickWay": 0, "maxWaitTime": 10, - "params": [], + "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]" + "/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": -1, - "index": 3, + "id": 4, + "index": 5, "parentId": 0, "type": 1, "option": 8, "title": "循环", - "sequence": [5, 4], + "sequence": [7, 6], "isInLoop": false, - "position": 2, + "position": 3, "parameters": { - "history": 4, + "history": 5, "tabIndex": -1, "useLoop": false, - "xpath": "//*[contains(@class, \"user\")]", + "xpath": "//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]", "iframe": true, "wait": 0, "waitType": 0, @@ -372,90 +421,14 @@ "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]" + "/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" ] } }, { - "id": -1, - "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, - "params": [], - "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": -1, - "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": -1, + "id": 6, "index": 6, "parentId": 4, "type": 0, @@ -463,12 +436,12 @@ "title": "点击元素", "sequence": [], "isInLoop": true, - "position": 0, + "position": 1, "parameters": { - "history": 4, + "history": 5, "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", + "xpath": "//*[contains(@class, \"pagination\")]/ul[1]/li[10]/a[1]", "iframe": true, "wait": 2, "waitType": 0, @@ -481,1280 +454,62 @@ "scrollWaitTime": 1, "clickWay": 0, "maxWaitTime": 10, - "params": [], - "allXPaths": "", - "loopType": 1 - } - }, - { - "id": -1, - "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", + "paras": [], "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": -1, - "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": -1, - "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, - "params": [ - { - "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 - } - ] - } - }, - { - "id": 2, - "index": 10, - "parentId": 0, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 3, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[@id=\"10609141688426033070\"]/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "iframe": true, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "allXPaths": [ - "/html/body/div[3]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/div[1]/div[1]/div[1]/span[1]/a[1]/b[1]", - "//b[contains(., 'Nocturne N')]", - "/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" - ] - } - }, - { - "id": 3, - "index": 11, - "parentId": 0, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": false, - "position": 2, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": true, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "params": [ - { - "nodeType": 0, - "contentType": 0, - "relative": false, - "name": "参数1_文本", - "desc": "", - "relativeXPath": "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/em[1]", - "allXPaths": [ - "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/em[1]", - "//em[contains(., 'Nocturne N')]", - "//EM[@class='f-ff2']", - "/html/body/div[last()-8]/div[last()-1]/div/div/div[last()-1]/div[last()-1]/div/div[last()-2]/div/em" - ], - "exampleValues": [ - { - "num": 0, - "value": "Nocturne No. 2 in E Flat Major, Op. 9, No. 2" - } - ], - "unique_index": "8l265os1r85ljnha0rx", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 0, - "relative": false, - "name": "参数2_文本", - "desc": "", - "relativeXPath": "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[3]", - "allXPaths": [ - "/html/body/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[3]", - "//div[contains(., '作曲 : Frédé')]", - "id(\"lyric-content\")", - "//DIV[@class='bd bd-open f-brk f-ib']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div[last()-1]/div[last()-1]/div/div" - ], - "exampleValues": [ - { - "num": 0, - "value": "作曲 : Frédéric François Chopin纯音乐,请欣赏" - } - ], - "unique_index": "wo55mnquaokljnha0rx", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] - } - }, - { - "id": 4, - "index": 12, - "parentId": 0, - "type": 1, - "option": 8, - "title": "循环", - "sequence": [13, 14], - "isInLoop": false, - "position": 3, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[3]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[2]/div", - "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[1]/div[1]/div[1]/div[2]/div[1]/div[2]/div[2]/div[1]", - "//div[contains(., '新鑫曼巴:建议这种纯')]", - "id(\"1430545231688426048755\")", - "//DIV[@class='itm']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]" - ] + "/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": 13, + "index": 7, "parentId": 4, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [8], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "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", + "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[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": 8, + "parentId": 5, "type": 0, "option": 3, "title": "提取数据", @@ -1762,7 +517,7 @@ "isInLoop": true, "position": 0, "parameters": { - "history": 4, + "history": 5, "tabIndex": -1, "useLoop": false, "xpath": "", @@ -1773,76 +528,25 @@ "beforeJSWaitTime": 0, "afterJS": "", "afterJSWaitTime": 0, - "params": [ + "paras": [ { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数3_链接文本", - "desc": "", - "relativeXPath": "/div[1]/a[1]", - "allXPaths": [ - "/div[1]/a[1]", - "//a[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div[last()-1]/a" - ], - "exampleValues": [{ "num": 0, "value": "" }], - "unique_index": "/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": "参数4_链接地址", - "desc": "", - "relativeXPath": "/div[1]/a[1]", - "allXPaths": [ - "/div[1]/a[1]", - "//a[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div[last()-1]/a" - ], - "exampleValues": [{ "num": 0, "value": "/user/home?id=6622403" }], - "unique_index": "/div[1]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, + "nodeType": 0, "contentType": 1, "relative": true, - "name": "参数5_图片地址", + "name": "参数1_文本", "desc": "", - "relativeXPath": "/div[1]/a[1]/img[1]", + "relativeXPath": "/td[1]", "allXPaths": [ - "/div[1]/a[1]/img[1]", - "//img[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div[last()-1]/a/img" + "/td[1]", + "//td[contains(., '5.0')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]" ], - "exampleValues": [ - { - "num": 0, - "value": "http://p2.music.126.net/XM9AGb0vN4OSKK4WeZM7aA==/109951165633941106.jpg?param=50y50" - } - ], - "unique_index": "/div[1]/a[1]/img[1]", + "exampleValues": [{ "num": 0, "value": "5.0" }], + "unique_index": "/td[1]", "iframe": true, - "default": "", + "default": "8.8", + "paraType": "double", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -1855,21 +559,98 @@ "nodeType": 0, "contentType": 1, "relative": true, - "name": "参数6_文本", + "name": "参数2_文本", "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]", + "relativeXPath": "/td[2]", "allXPaths": [ - "/div[2]/div[1]/div[1]", - "//div[contains(., '新鑫曼巴:建议这种纯')]", - "//DIV[@class='cnt f-brk']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div" + "/td[2]", + "//td[contains(., '2023-06-29')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]" ], - "exampleValues": [ - { "num": 0, "value": ":建议这种纯音乐,小编在歌词中做简介" } + "exampleValues": [{ "num": 0, "value": "2023-06-2912:58:00" }], + "unique_index": "/td[2]", + "iframe": true, + "default": "2020-02-08 00:01:02", + "paraType": "datetime", + "recordASField": 1, + "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(., '37.10')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]" ], - "unique_index": "/div[2]/div[1]/div[1]", + "exampleValues": [{ "num": 0, "value": "37.10" }], + "unique_index": "/td[3]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, + "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(., '71.85')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]" + ], + "exampleValues": [{ "num": 0, "value": "71.85" }], + "unique_index": "/td[4]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, + "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(., '140')]", + "/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]" + ], + "exampleValues": [{ "num": 0, "value": "140" }], + "unique_index": "/td[5]", + "iframe": true, + "default": "", + "paraType": "int", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -1882,19 +663,21 @@ "nodeType": 1, "contentType": 0, "relative": true, - "name": "参数7_链接文本", + "name": "参数1_页面标题", "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/a[1]", + "relativeXPath": "/td[6]/a[1]", "allXPaths": [ - "/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '新鑫曼巴')]", - "//A[@class='s-fc7']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div/a" + "/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[last()-19]/td/a" ], - "exampleValues": [{ "num": 0, "value": "新鑫曼巴" }], - "unique_index": "/div[2]/div[1]/div[1]/a[1]", + "exampleValues": [{ "num": 0, "value": "塔吉克斯坦" }], + "unique_index": "/td[6]/a[1]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -1907,19 +690,26 @@ "nodeType": 2, "contentType": 0, "relative": true, - "name": "参数8_链接地址", + "name": "参数7_链接地址", "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/a[1]", + "relativeXPath": "/td[6]/a[1]", "allXPaths": [ - "/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '新鑫曼巴')]", - "//A[@class='s-fc7']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div/a" + "/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[last()-19]/td/a" ], - "exampleValues": [{ "num": 0, "value": "/user/home?id=6622403" }], - "unique_index": "/div[2]/div[1]/div[1]/a[1]", + "exampleValues": [ + { + "num": 0, + "value": "https://news.ceic.ac.cn/CC20230629125800.html" + } + ], + "unique_index": "/td[6]/a[1]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -1929,27 +719,49 @@ "downloadPic": 0 }, { - "nodeType": 4, + "nodeType": 0, "contentType": 1, "relative": true, - "name": "参数9_图片地址", + "name": "参数8_文本", "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/img[1]", + "relativeXPath": "/th[1]", "allXPaths": [ - "/div[2]/div[1]/div[1]/img[1]", - "//img[contains(., '')]", - "//IMG[@class='brand-tag brand-vip']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div[last()-1]/div/img" + "/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": 0, - "value": "http://p5.music.126.net/obj/wovDmcKXw6PCn2_CmsOk/17941162599/305d/0dee/968a/22f0de72becf0485ecac1d6a5898825a.png" - } - ], - "unique_index": "/div[2]/div[1]/div[1]/img[1]", + "exampleValues": [{ "num": 1, "value": "震级(M)" }], + "unique_index": "/th[1]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, + "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]", + "iframe": true, + "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -1964,17 +776,18 @@ "relative": true, "name": "参数10_文本", "desc": "", - "relativeXPath": "/div[2]/div[2]/div[1]", + "relativeXPath": "/th[3]", "allXPaths": [ - "/div[2]/div[2]/div[1]", - "//div[contains(., '2016年4月18日')]", - "//DIV[@class='time s-fc4']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/div" + "/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": 0, "value": "2016年4月18日" }], - "unique_index": "/div[2]/div[2]/div[1]", + "exampleValues": [{ "num": 1, "value": "纬度(°)" }], + "unique_index": "/th[3]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -1984,22 +797,23 @@ "downloadPic": 0 }, { - "nodeType": 1, - "contentType": 0, + "nodeType": 0, + "contentType": 1, "relative": true, - "name": "参数11_链接文本", + "name": "参数11_文本", "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/span[1]/a[1]", + "relativeXPath": "/th[4]", "allXPaths": [ - "/div[2]/div[2]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span[last()-1]/span/a" + "/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": 0, "value": "删除" }], - "unique_index": "/div[2]/div[2]/span[1]/span[1]/a[1]", + "exampleValues": [{ "num": 1, "value": "经度(°)" }], + "unique_index": "/th[4]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -2009,22 +823,23 @@ "downloadPic": 0 }, { - "nodeType": 2, - "contentType": 0, + "nodeType": 0, + "contentType": 1, "relative": true, - "name": "参数12_链接地址", + "name": "参数12_文本", "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/span[1]/a[1]", + "relativeXPath": "/th[5]", "allXPaths": [ - "/div[2]/div[2]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span[last()-1]/span/a" + "/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": 0, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[2]/span[1]/span[1]/a[1]", + "exampleValues": [{ "num": 1, "value": "深度(千米)" }], + "unique_index": "/th[5]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -2039,502 +854,18 @@ "relative": true, "name": "参数13_文本", "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/span[1]/span[1]", + "relativeXPath": "/th[6]", "allXPaths": [ - "/div[2]/div[2]/span[1]/span[1]/span[1]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span[last()-1]/span/span" + "/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": 0, "value": "|" }], - "unique_index": "/div[2]/div[2]/span[1]/span[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数14_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[1]", - "allXPaths": [ - "/div[2]/div[2]/a[1]", - "//a[contains(., '(29844)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 0, "value": " (29844)" }], - "unique_index": "/div[2]/div[2]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数15_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[1]", - "allXPaths": [ - "/div[2]/div[2]/a[1]", - "//a[contains(., '(29844)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 0, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[2]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数16_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[2]", - "allXPaths": [ - "/div[2]/div[2]/span[2]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/span" - ], - "exampleValues": [{ "num": 0, "value": "|" }], - "unique_index": "/div[2]/div[2]/span[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数17_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[2]", - "allXPaths": [ - "/div[2]/div[2]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "回复" }], - "unique_index": "/div[2]/div[2]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数18_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/a[2]", - "allXPaths": [ - "/div[2]/div[2]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-34]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[2]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数19_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]", - "allXPaths": [ - "/div[2]/div[2]", - "//div[contains(., '◆◆_Being_:')]", - "//DIV[@class='que f-brk f-pr s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div[last()-1]" - ], - "exampleValues": [ - { - "num": 6, - "value": ":有次我在琴房练琴,练的是一首通俗歌曲改编的钢琴曲。正当我沉醉于自己的琴声时,隔壁忽然传来这首夜曲,那一刻我突然觉得自己练的曲子简直是没法听,于是后半段就没练,坐在琴房听隔壁弹了一个小时夜曲。" - } - ], - "unique_index": "/div[2]/div[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数20_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/i[1]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/i[1]", - "//i[contains(., '◆')]", - "//I[@class='bd']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div[last()-1]/span/i[last()-1]" - ], - "exampleValues": [{ "num": 6, "value": "◆" }], - "unique_index": "/div[2]/div[2]/span[1]/i[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数21_文本", - "desc": "", - "relativeXPath": "/div[2]/div[2]/span[1]/i[2]", - "allXPaths": [ - "/div[2]/div[2]/span[1]/i[2]", - "//i[contains(., '◆')]", - "//I[@class='bg']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div[last()-1]/span/i" - ], - "exampleValues": [{ "num": 6, "value": "◆" }], - "unique_index": "/div[2]/div[2]/span[1]/i[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数22_文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/div[1]", - "allXPaths": [ - "/div[2]/div[3]/div[1]", - "//div[contains(., '2016年4月24日')]", - "//DIV[@class='time s-fc4']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/div" - ], - "exampleValues": [{ "num": 6, "value": "2016年4月24日" }], - "unique_index": "/div[2]/div[3]/div[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数23_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[1]/span[1]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span[last()-1]/span/a" - ], - "exampleValues": [{ "num": 6, "value": "删除" }], - "unique_index": "/div[2]/div[3]/span[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": "参数24_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[1]/span[1]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/span[1]/span[1]/a[1]", - "//a[contains(., '删除')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span[last()-1]/span/a" - ], - "exampleValues": [{ "num": 6, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[3]/span[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": "参数25_文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[1]/span[1]/span[1]", - "allXPaths": [ - "/div[2]/div[3]/span[1]/span[1]/span[1]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span[last()-1]/span/span" - ], - "exampleValues": [{ "num": 6, "value": "|" }], - "unique_index": "/div[2]/div[3]/span[1]/span[1]/span[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数26_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/a[1]", - "//a[contains(., '(7809)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 6, "value": " (7809)" }], - "unique_index": "/div[2]/div[3]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数27_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[1]", - "allXPaths": [ - "/div[2]/div[3]/a[1]", - "//a[contains(., '(7809)')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a[last()-1]" - ], - "exampleValues": [{ "num": 6, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[3]/a[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数28_文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/span[2]", - "allXPaths": [ - "/div[2]/div[3]/span[2]", - "//span[contains(., '|')]", - "//SPAN[@class='sep']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/span" - ], - "exampleValues": [{ "num": 6, "value": "|" }], - "unique_index": "/div[2]/div[3]/span[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数29_链接文本", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[2]", - "allXPaths": [ - "/div[2]/div[3]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a" - ], - "exampleValues": [{ "num": 6, "value": "回复" }], - "unique_index": "/div[2]/div[3]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数30_链接地址", - "desc": "", - "relativeXPath": "/div[2]/div[3]/a[2]", - "allXPaths": [ - "/div[2]/div[3]/a[2]", - "//a[contains(., '回复')]", - "//A[@class='s-fc3']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-28]/div/div/a" - ], - "exampleValues": [{ "num": 6, "value": "javascript:void(0)" }], - "unique_index": "/div[2]/div[3]/a[2]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数31_图片地址", - "desc": "", - "relativeXPath": "/div[2]/div[2]/img[1]", - "allXPaths": [ - "/div[2]/div[2]/img[1]", - "//img[contains(., '')]", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-19]/div/div[last()-1]/img" - ], - "exampleValues": [ - { - "num": 15, - "value": "http://s1.music.126.net/style/web2/emt/emoji_13.png" - } - ], - "unique_index": "/div[2]/div[2]/img[1]", - "iframe": true, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数32_图片地址", - "desc": "", - "relativeXPath": "/div[2]/div[1]/div[1]/img[2]", - "allXPaths": [ - "/div[2]/div[1]/div[1]/img[2]", - "//img[contains(., '')]", - "//IMG[@class='brand-tag brand-package']", - "/html/body/div[last()-10]/div[last()-1]/div/div/div/div/div/div[last()-1]/div[last()-3]/div/div[last()-1]/div/img" - ], - "exampleValues": [ - { - "num": 31, - "value": "https://p5.music.126.net/obj/wonDlsKUwrLClGjCm8Kx/21892874340/50e6/e81d/5292/2d693cbb98954e28d4d9fdb11be99a8b.png" - } - ], - "unique_index": "/div[2]/div[1]/div[1]/img[2]", + "exampleValues": [{ "num": 1, "value": "参考位置" }], + "unique_index": "/th[6]", "iframe": true, "default": "", + "paraType": "text", + "recordASField": 1, "beforeJS": "", "beforeJSWaitTime": 0, "JS": "", @@ -2548,18 +879,41 @@ } }, { - "id": 6, - "index": 14, - "parentId": 4, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], + "id": -1, + "index": 9, + "parentId": 5, + "type": 2, + "option": 9, + "title": "判断条件", + "sequence": [10], "isInLoop": true, "position": 1, "parameters": { - "history": 4, - "tabIndex": -1, + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0 + } + }, + { + "id": -1, + "parentId": 9, + "index": 10, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [16], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, "useLoop": false, "xpath": "", "iframe": false, @@ -2569,34 +923,314 @@ "beforeJSWaitTime": 0, "afterJS": "", "afterJSWaitTime": 0, - "params": [ - { - "nodeType": 1, - "contentType": 0, - "relative": false, - "name": "参数33_链接文本", - "desc": "", - "extractType": 0, - "relativeXPath": "/html/body/div[1]/div[1]/div[1]/h1[1]/a[1]", - "allXPaths": [ - "/html/body/div[1]/div[1]/div[1]/h1[1]/a[1]", - "//a[contains(., '网易云音乐')]", - "/html/body/div[last()-7]/div[last()-2]/div/h1/a" - ], - "exampleValues": [{ "num": 0, "value": "网易云音乐" }], - "unique_index": "3mjhotxlh4mljnhapl0", - "iframe": false, - "default": "", - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] + "class": "3", + "value": "日本", + "code": "", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "parentId": 9, + "index": 11, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 1 + }, + { + "index": 12, + "id": -1, + "parentId": 9, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [13], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "index": 13, + "parentId": 10, + "type": 2, + "option": 9, + "title": "条件分支", + "sequence": [14, 15], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0 } + }, + { + "id": -1, + "parentId": 13, + "index": 14, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "parentId": 13, + "index": 15, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 1 + }, + { + "id": -1, + "index": 16, + "parentId": 11, + "type": 0, + "option": 5, + "title": "Break", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "codeMode": "3", + "code": "", + "waitTime": 0, + "recordASField": 0, + "paraType": "text" + } + }, + { + "id": -1, + "index": 17, + "parentId": 4, + "type": 2, + "option": 9, + "title": "判断条件", + "sequence": [18], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0 + } + }, + { + "id": -1, + "parentId": 6, + "index": 18, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [20], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": "5", + "value": "哥伦比亚", + "code": "return document.body.innerText.includes(\"哥伦比亚\")", + "waitTime": 0 + }, + "position": 0 + }, + { + "id": -1, + "parentId": 7, + "index": 19, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 1 + }, + { + "id": -1, + "index": 20, + "parentId": 9, + "type": 0, + "option": 5, + "title": "退出循环", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": true, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "codeMode": "3", + "code": "", + "waitTime": 0, + "recordASField": 0, + "paraType": "text" + } + }, + { + "index": 21, + "id": -1, + "parentId": 6, + "type": 3, + "option": 10, + "title": "条件分支", + "sequence": [], + "isInLoop": true, + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "class": 0, + "value": "", + "code": "", + "waitTime": 0 + }, + "position": 0 } ] } diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/149.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/149.json index 3083292..5d09492 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/149.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/149.json @@ -1 +1 @@ -{"id":149,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"7/7/2023, 6:36:49 AM","version":"0.3.5","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"outputFormat":"mysql","saveName":"京东","containJudge":false,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","exampleValue":"https://shouji.jd.com/"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"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,"cookies":""}},{"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[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"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[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"arguments[0].innerText = \"'\" + arguments[0].innerText + '\"'","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":"https://shouji.jd.com/"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file +{"id":149,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"7/7/2023, 6:36:49 AM","update_time":"12/20/2023, 4:03:13 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"mysql","saveName":"京东","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":1,"desc":"https://www.jd.com","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.jd.com","desc":"List of URLs to be collected, separated by \\n for multiple lines","type":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","exampleValue":"https://shouji.jd.com/"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"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,"cookies":""}},{"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[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"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[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"arguments[0].innerText = \"'\" + arguments[0].innerText + '\"'","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":"https://shouji.jd.com/"}],"unique_index":"6h61epq3t9sljrq1vbg","iframe":false,"default":"","paraType":"text","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/205.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/205.json index a5aba4c..69fe2d0 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/205.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/205.json @@ -1 +1 @@ -{"id":205,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"8/10/2023, 6:19:22 PM","update_time":"8/10/2023, 6:35:26 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":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":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"loopText_1","nodeId":4,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"1~2\n3~4","value":"1~2\n3~4"},{"id":2,"name":"inputText_2","nodeName":"输入文字","nodeId":12,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shouji.jd.com/"},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":3,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":4,"name":"自定义操作2","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,7,4,8,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":5,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,13,12],"isInLoop":false,"position":4,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":9,"index":3,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"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":"https://shouji.jd.com/"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":3,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[6,5,14],"isInLoop":false,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"1~2\n3~4","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":7,"index":5,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":3,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":1,"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":6,"index":6,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":2}},{"id":2,"index":7,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"self.a = 15","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":8,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"print(self.a, \"sdf---------------\")\nself.a += 222\nprint(self.a, \"sdf---------------\")","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":-1,"index":9,"parentId":0,"type":2,"option":9,"title":"判断条件","sequence":[10,11],"isInLoop":false,"position":5,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":6,"index":10,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":0},{"id":-1,"parentId":6,"index":11,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":11,"index":12,"parentId":5,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","index":0}},{"id":10,"index":13,"parentId":5,"type":0,"option":5,"title":"自定义操作2","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"6","code":"str(self.a) + \"TEST\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":8,"index":14,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"0","index":0}}]} \ No newline at end of file +{"id":205,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"8/10/2023, 6:19:22 PM","update_time":"8/10/2023, 6:35:26 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":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":"text","exampleValue":"https://www.jd.com"},{"id":1,"name":"loopText_1","nodeId":4,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"1~2\n3~4","value":"1~2\n3~4"},{"id":2,"name":"inputText_2","nodeName":"输入文字","nodeId":12,"desc":"要输入的文本,如京东搜索框输入:电脑","type":"text","exampleValue":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"手机"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://shouji.jd.com/"},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":3,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":4,"name":"自定义操作2","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,7,4,8,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":5,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,13,12],"isInLoop":false,"position":4,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div/a","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '手机')]","/html/body/div[last()-5]/div/div[last()-4]/div/div[last()-2]/div/div/div/div[last()-1]/div[last()-12]/a[last()-1]"]}},{"id":9,"index":3,"parentId":5,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"paras":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"手机"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"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":"https://shouji.jd.com/"}],"unique_index":"hxrjjymdhcll50bpgx","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":3,"index":4,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[6,5,14],"isInLoop":false,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"1~2\n3~4","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":7,"index":5,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":3,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":1,"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":6,"index":6,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"","index":2}},{"id":2,"index":7,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"self.a = 15","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":8,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"5","code":"print(self.a, \"sdf---------------\")\nself.a += 222\nprint(self.a, \"sdf---------------\")","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":-1,"index":9,"parentId":0,"type":2,"option":9,"title":"判断条件","sequence":[10,11],"isInLoop":false,"position":5,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":-1,"parentId":6,"index":10,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":0},{"id":-1,"parentId":6,"index":11,"type":3,"option":10,"title":"条件分支","sequence":[],"isInLoop":false,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1},{"id":11,"index":12,"parentId":5,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"Field[\"参数2_链接地址\"]+Field[\"自定义操作2\"]","index":0}},{"id":10,"index":13,"parentId":5,"type":0,"option":5,"title":"自定义操作2","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"codeMode":"6","code":"str(self.a) + \"TEST\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":8,"index":14,"parentId":3,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"//*[@id=\"key\"]","iframe":false,"wait":1,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"0","index":0}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/209.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/209.json index 8d85f88..6531f86 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/209.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/209.json @@ -1 +1 @@ -{"id":209,"name":"【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"about:blank","create_time":"2023/11/22 21:51:29","update_time":"11/23/2023, 4:13:41 AM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"loopTimes_循环_0","nodeId":4,"nodeName":"循环","desc":"循环循环执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0},{"id":1,"name":"loopText_1","nodeId":9,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023/0101\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0305\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0401\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0402\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0403\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0501\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0502\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0503\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0601\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0602\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0603\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0701\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0702\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0703\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0704\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0705\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0706\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0707\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0708\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0709\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0710\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0711\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0712\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0713\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0714\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0801\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0802\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0803\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0804\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0805\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0806\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0807\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0808\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0809\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0810\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0811\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0812\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0813\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0814\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0815\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0816\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0817\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0818\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0819\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0820\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0821\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0822\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0823\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0824\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0825\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0826\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0827\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0828\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0829\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0830\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0831\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0832\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0833\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0834\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0835\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0836\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0837\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0839\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0901\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0902\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0903\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0904\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0905\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0906\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0907\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0908\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0909\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1001\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1002\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1003\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1004\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1005\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1006\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1007\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1008\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1009\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1011\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1203\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1204\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1205\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1305\n","value":"https://www.shanghairanking.cn/rankings/bcsr/2023/0101\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0305\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0401\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0402\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0403\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0501\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0502\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0503\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0601\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0602\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0603\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0701\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0702\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0703\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0704\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0705\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0706\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0707\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0708\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0709\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0710\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0711\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0712\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0713\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0714\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0801\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0802\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0803\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0804\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0805\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0806\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0807\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0808\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0809\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0810\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0811\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0812\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0813\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0814\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0815\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0816\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0817\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0818\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0819\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0820\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0821\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0822\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0823\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0824\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0825\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0826\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0827\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0828\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0829\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0830\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0831\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0832\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0833\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0834\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0835\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0836\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0837\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0839\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0901\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0902\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0903\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0904\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0905\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0906\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0907\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0908\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0909\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1001\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1002\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1003\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1004\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1005\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1006\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1007\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1008\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1009\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1011\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1203\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1204\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1205\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1305\n"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"湖北大学\n "},{"id":1,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"(哲学)"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[9],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0},"isInLoop":false},{"id":-1,"index":1,"parentId":1,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":true,"position":0,"parameters":{"useLoop":true,"xpath":"","wait":3,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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":-1,"index":3,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":"","loopType":1}},{"id":3,"index":4,"parentId":1,"type":1,"option":8,"title":"循环","sequence":[6,5],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"]}},{"id":5,"index":5,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"],"loopType":0}},{"id":4,"index":6,"parentId":3,"type":1,"option":8,"title":"循环","sequence":[8,7],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '湖北大学')]","//A[@class='name-cn']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"]}},{"id":7,"index":7,"parentId":4,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"params":[{"nodeType":1,"contentType":0,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"湖北大学\n "}],"unique_index":"dgby6tuc79nlp9toe7t","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":6,"index":8,"parentId":4,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数3_文本","desc":"","extractType":0,"relativeXPath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[3]","allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[3]","//div[contains(., '(哲学)')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-2]/div[last()-1]/div[last()-1]"],"exampleValues":[{"num":0,"value":"(哲学)"}],"unique_index":"xgoa18n26rllp9toqoa","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":1,"index":9,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[10,4],"isInLoop":false,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"4","pathList":"","textList":"https://www.shanghairanking.cn/rankings/bcsr/2023/0101\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0305\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0401\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0402\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0403\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0501\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0502\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0503\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0601\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0602\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0603\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0701\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0702\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0703\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0704\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0705\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0706\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0707\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0708\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0709\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0710\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0711\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0712\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0713\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0714\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0801\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0802\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0803\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0804\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0805\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0806\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0807\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0808\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0809\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0810\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0811\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0812\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0813\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0814\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0815\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0816\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0817\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0818\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0819\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0820\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0821\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0822\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0823\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0824\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0825\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0826\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0827\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0828\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0829\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0830\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0831\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0832\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0833\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0834\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0835\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0836\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0837\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0839\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0901\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0902\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0903\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0904\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0905\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0906\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0907\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0908\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/0909\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1001\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1002\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1003\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1004\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1005\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1006\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1007\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1008\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1009\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1011\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1201\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1202\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1203\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1204\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1205\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1301\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1302\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1303\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1304\nhttps://www.shanghairanking.cn/rankings/bcsr/2023/1305\n","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":2,"index":10,"parentId":1,"type":0,"option":1,"title":"打开网页","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":true,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"about:blank","links":"about:blank","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}}]} \ No newline at end of file +{"id":209,"name":"京东全球版-专业的综合网上购物商城","url":"https://www.jd.com","links":"https://www.jd.com","create_time":"12/12/2023, 12:20:51 PM","update_time":"12/12/2023, 12:20:51 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":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":"text","exampleValue":"https://www.jd.com"}],"outputParameters":[{"id":0,"name":"参数1_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"领券中心"},{"id":1,"name":"参数2_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://a.jd.com/?channel=haiwai"}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.jd.com","links":"https://www.jd.com","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"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[4]/div[1]/ul[1]/li/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[4]/div[1]/ul[1]/li[1]/a[1]","//a[contains(., '领券中心')]","/html/body/div[last()-6]/div/ul/li[last()-1]/a"]}},{"id":3,"index":3,"parentId":2,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"paras":[{"nodeType":1,"contentType":8,"relative":true,"name":"参数1_链接文本","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"领券中心"}],"unique_index":"jm1mx01sc2elq1u4av8","iframe":false,"default":"","paraType":"text","recordASField":1,"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":"https://a.jd.com/?channel=haiwai"}],"unique_index":"jm1mx01sc2elq1u4av8","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/210.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/210.json index 4fd145c..cd71589 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/210.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/210.json @@ -1 +1,337 @@ -{"id":210,"name":"360安全浏览器2023最新版下载-全面保护上网安全就选360安全浏览器-华军软件园","url":"https://www.onlinedown.net/soft/66801.htm","links":"https://www.onlinedown.net/soft/66801.htm","create_time":"10/10/2023, 10:39:02 PM","update_time":"10/10/2023, 10:39:02 PM","version":"0.5.0","saveThreshold":10,"cloudflare":0,"environment":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"containJudge":false,"desc":"https://www.onlinedown.net/soft/66801.htm","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.onlinedown.net/soft/66801.htm","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.onlinedown.net/soft/66801.htm"}],"outputParameters":[],"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":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.onlinedown.net/soft/66801.htm","links":"https://www.onlinedown.net/soft/66801.htm","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"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, \"lj-btn\")]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/section[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1]/a[1]/b[1]","//b[contains(., '立即下载')]","//B[@class='lj-btn']","/html/body/section/div/div[last()-4]/div[last()-1]/div/div[last()-1]/div/a[last()-1]/b"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":2,"title":"点击通用网络下载","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"down-list\")]/div[2]/p[1]/a[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"allXPaths":["/html/body/section[1]/div[1]/div[2]/div[1]/div[4]/div[1]/div[1]/div[2]/p[1]/a[1]","//a[contains(., '通用网络下载')]","//A[@class='qrcode_show rest']","/html/body/section/div/div[last()-3]/div[last()-1]/div[last()-4]/div/div[last()-1]/div[last()-1]/p/a[last()-1]"]}}]} \ No newline at end of file +{ + "id": 210, + "name": "【海鸥怎么样】海鸥口碑好不好_缺点_优点_点评_易车", + "url": "https://dianping.yiche.com/haiou/koubei/", + "links": "https://dianping.yiche.com/haiou/koubei/", + "create_time": "12/15/2023, 5:15:10 PM", + "update_time": "12/20/2023, 4:13:00 PM", + "version": "0.6.0", + "saveThreshold": 10, + "quitWaitTime": 60, + "environment": 0, + "maximizeWindow": 0, + "maxViewLength": 15, + "recordLog": 1, + "outputFormat": "xlsx", + "saveName": "current_time", + "dataWriteMode": 1, + "inputExcel": "", + "startFromExit": 0, + "pauseKey": "p", + "containJudge": false, + "browser": "chrome", + "removeDuplicate": 0, + "desc": "https://dianping.yiche.com/haiou/koubei/", + "inputParameters": [ + { + "id": 0, + "name": "urlList_0", + "nodeId": 1, + "nodeName": "打开网页", + "value": "https://dianping.yiche.com/haiou/koubei/", + "desc": "要采集的网址列表,多行以\\n分开", + "type": "text", + "exampleValue": "https://dianping.yiche.com/haiou/koubei/" + }, + { + "id": 1, + "name": "loopTimes_1", + "nodeId": 2, + "nodeName": "循环", + "desc": "循环循环执行的次数(0代表无限循环)", + "type": "int", + "exampleValue": 100, + "value": 100 + } + ], + "outputParameters": [ + { + "id": 0, + "name": "参数1", + "desc": "", + "type": "text", + "recordASField": 1, + "exampleValue": "\n \n \n \n \n \n \n 浑然一体水蜜桃1535\n \n \n \n 车主\n \n \n \n 2023-09-29\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 海鸥 2023款 405km 飞翔版\n \n \n \n \n \n 4.43\n \n 裸车价\n 9.28万元\n \n \n \n \n 购车时间\n 2023-09\n \n \n \n \n \n \n \n \n 🕙购车经历\n销售答应了一堆配件,但是一个都没给我呢,我也不知道啥时候能给我,如果最后还是不给我,我打算曝光他们,太过分了,一个月了,都没轮到我。!!!\n一问就是没啦,当初是答应的好好的 。交了钱就装不上这些零件了。太过分了这些销售。大家要小心销售骗你哦。反正最后不给我我就去门口拉条幅去。车停他门口。警告其他消费者。\n💴提车价格\n92800 保险5300 上牌500\n⛽充电时间\n1小时吧,没有特别低的时候去充电\n🌍续航\n夏天的高温天气也让我对海鸥黑色的使用感到***。由于黑色的车身吸热较多,内部温度会比外部更高。因此,在炎炎夏日,我经常需要开启空调以\n 查看完整点评>>\n \n \n \n \n \n \n \n \n \n \n 共9 张\n \n \n \n \n \n " + } + ], + "graph": [ + { + "index": 0, + "id": 0, + "parentId": 0, + "type": -1, + "option": 0, + "title": "root", + "sequence": [1, 2], + "parameters": { + "history": 1, + "tabIndex": 0, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0 + }, + "isInLoop": false + }, + { + "id": 1, + "index": 1, + "parentId": 0, + "type": 0, + "option": 1, + "title": "打开网页", + "sequence": [], + "isInLoop": false, + "position": 0, + "parameters": { + "useLoop": false, + "xpath": "", + "wait": 5, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "url": "https://dianping.yiche.com/haiou/koubei/", + "links": "https://dianping.yiche.com/haiou/koubei/", + "maxWaitTime": 10, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "cookies": "" + } + }, + { + "id": 2, + "index": 2, + "parentId": 0, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [4, 3], + "isInLoop": false, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": false, + "xpath": "//*[contains(@class, \"next\")]", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "loopType": 0, + "pathList": "", + "textList": "", + "code": "", + "waitTime": 0, + "exitCount": 100, + "historyWait": 2, + "breakMode": 0, + "breakCode": "", + "breakCodeWaitTime": 0, + "allXPaths": [ + "/html/body/div[6]/div[1]/div[5]/div[1]/a[2]", + "//a[contains(., '>')]", + "//A[@class='link-btn next pg-item']", + "/html/body/div[last()-5]/div[last()-3]/div[last()-1]/div/a" + ] + } + }, + { + "id": 4, + "index": 3, + "parentId": 2, + "type": 0, + "option": 2, + "title": "点击元素", + "sequence": [], + "isInLoop": true, + "position": 1, + "parameters": { + "history": 4, + "tabIndex": -1, + "useLoop": true, + "xpath": "", + "iframe": false, + "wait": 5, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "scrollType": 0, + "scrollCount": 1, + "scrollWaitTime": 1, + "clickWay": 0, + "maxWaitTime": 10, + "paras": [], + "allXPaths": [ + "/html/body/div[6]/div[1]/div[5]/div[1]/a[2]", + "//a[contains(., '>')]", + "//A[@class='link-btn next pg-item']", + "/html/body/div[last()-5]/div[last()-3]/div[last()-1]/div/a" + ], + "loopType": 0 + } + }, + { + "id": 3, + "index": 4, + "parentId": 2, + "type": 1, + "option": 8, + "title": "循环", + "sequence": [5], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "/html/body/div[6]/div[1]/div[4]/div", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 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[6]/div[1]/div[4]/div[1]", + "//div[contains(., '')]", + "//DIV[@class='cm-content-moudle']", + "/html/body/div[last()-5]/div[last()-3]/div[last()-2]/div[last()-19]" + ] + } + }, + { + "id": 5, + "index": 5, + "parentId": 3, + "type": 0, + "option": 3, + "title": "提取数据", + "sequence": [], + "isInLoop": true, + "position": 0, + "parameters": { + "history": 5, + "tabIndex": -1, + "useLoop": false, + "xpath": "", + "iframe": false, + "wait": 0, + "waitType": 0, + "beforeJS": "", + "beforeJSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "waitElement": "", + "waitElementTime": 10, + "waitElementIframeIndex": 0, + "clear": 0, + "paras": [ + { + "nodeType": 0, + "contentType": 0, + "relative": true, + "name": "参数1", + "desc": "", + "extractType": 0, + "relativeXPath": "", + "allXPaths": "", + "exampleValues": [ + { + "num": 0, + "value": "\n \n \n \n \n \n \n 浑然一体水蜜桃1535\n \n \n \n 车主\n \n \n \n 2023-09-29\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 海鸥 2023款 405km 飞翔版\n \n \n \n \n \n 4.43\n \n 裸车价\n 9.28万元\n \n \n \n \n 购车时间\n 2023-09\n \n \n \n \n \n \n \n \n 🕙购车经历\n销售答应了一堆配件,但是一个都没给我呢,我也不知道啥时候能给我,如果最后还是不给我,我打算曝光他们,太过分了,一个月了,都没轮到我。!!!\n一问就是没啦,当初是答应的好好的 。交了钱就装不上这些零件了。太过分了这些销售。大家要小心销售骗你哦。反正最后不给我我就去门口拉条幅去。车停他门口。警告其他消费者。\n💴提车价格\n92800 保险5300 上牌500\n⛽充电时间\n1小时吧,没有特别低的时候去充电\n🌍续航\n夏天的高温天气也让我对海鸥黑色的使用感到***。由于黑色的车身吸热较多,内部温度会比外部更高。因此,在炎炎夏日,我经常需要开启空调以\n 查看完整点评>>\n \n \n \n \n \n \n \n \n \n \n 共9 张\n \n \n \n \n \n " + } + ], + "unique_index": "3z4vpp3jxm6lq6eyhad", + "iframe": false, + "default": "1", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ], + "loopType": 1, + "params": [ + { + "nodeType": 0, + "contentType": 0, + "relative": true, + "name": "参数1", + "desc": "", + "extractType": 0, + "relativeXPath": "", + "allXPaths": "", + "exampleValues": [ + { + "num": 0, + "value": "\n \n \n \n \n \n \n 浑然一体水蜜桃1535\n \n \n \n 车主\n \n \n \n 2023-09-29\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 海鸥 2023款 405km 飞翔版\n \n \n \n \n \n 4.43\n \n 裸车价\n 9.28万元\n \n \n \n \n 购车时间\n 2023-09\n \n \n \n \n \n \n \n \n 🕙购车经历\n销售答应了一堆配件,但是一个都没给我呢,我也不知道啥时候能给我,如果最后还是不给我,我打算曝光他们,太过分了,一个月了,都没轮到我。!!!\n一问就是没啦,当初是答应的好好的 。交了钱就装不上这些零件了。太过分了这些销售。大家要小心销售骗你哦。反正最后不给我我就去门口拉条幅去。车停他门口。警告其他消费者。\n💴提车价格\n92800 保险5300 上牌500\n⛽充电时间\n1小时吧,没有特别低的时候去充电\n🌍续航\n夏天的高温天气也让我对海鸥黑色的使用感到***。由于黑色的车身吸热较多,内部温度会比外部更高。因此,在炎炎夏日,我经常需要开启空调以\n 查看完整点评>>\n \n \n \n \n \n \n \n \n \n \n 共9 张\n \n \n \n \n \n " + } + ], + "unique_index": "3z4vpp3jxm6lq6eyhad", + "iframe": false, + "default": "1", + "paraType": "text", + "recordASField": 1, + "beforeJS": "", + "beforeJSWaitTime": 0, + "JS": "", + "JSWaitTime": 0, + "afterJS": "", + "afterJSWaitTime": 0, + "downloadPic": 0 + } + ] + } + } + ] +} diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/215.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/215.json index e79cc2f..46d3fce 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/215.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/215.json @@ -1 +1 @@ -{"id":215,"name":"弹窗示例","url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","create_time":"12/5/2023, 1:53:45 AM","update_time":"12/6/2023, 9:33:12 PM","version":"0.6.0","saveThreshold":10,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://easyspider.cn/test_pages/alert_test.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/alert_test.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/alert_test.html"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"},{"id":1,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,4,3,5],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击点击我","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/button[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":2,"allXPaths":["/html/body/button[1]","//button[contains(., '点击我')]","/html/body/button"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body[1]/p[eval(\"self.a+1\")]","allXPaths":["//html[1]","//html[contains(., '弹窗示例')]","/html"],"exampleValues":[{"num":0,"value":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"}],"unique_index":"d8of3rzoypelpr7n0qm","iframe":false,"default":"12345","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"alert(eval(\"self.a+2+int('1')\"))","afterJSWaitTime":0,"downloadPic":0}]}},{"id":2,"index":4,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"self.a = 1\nself.b = \"45\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":5,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"console.log(\"Field[\"参数1_文本\"]Field[\"参数1_文本\"]\")","waitTime":0,"recordASField":0,"paraType":"text"}}]} \ No newline at end of file +{"id":215,"name":"弹窗示例","url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","create_time":"12/5/2023, 1:53:45 AM","update_time":"12/13/2023, 3:50:21 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://easyspider.cn/test_pages/alert_test.html","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://easyspider.cn/test_pages/alert_test.html","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://easyspider.cn/test_pages/alert_test.html"}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"},{"id":1,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""},{"id":2,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,4,3,5],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://easyspider.cn/test_pages/alert_test.html","links":"https://easyspider.cn/test_pages/alert_test.html","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":-1,"index":2,"parentId":0,"type":0,"option":2,"title":"点击点击我","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/button[1]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":2,"allXPaths":["/html/body/button[1]","//button[contains(., '点击我')]","/html/body/button"]}},{"id":3,"index":3,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"/html/body[1]/p[eval(\"self.a+1\")]","allXPaths":["//html[1]","//html[contains(., '弹窗示例')]","/html"],"exampleValues":[{"num":0,"value":"\n 弹窗示例\n \n \n function showAlert() {\n alert('你已经点击了按钮!');\n }\n \n\n\n\n#wrapperToolkitIframe{\n position: absolute;\n top:0;\n}\n.toolcannotdrag{\n background-color: navy;\n width: 100%;\n text-align: center;\n font-size: 13px;\n height: 26px !important;\n padding-top: 8px !important;\n color: white;\n}\n\n\n点击我\n\n\n ✖ ✍操作台(点此拖动,左上角调整大小) \n ● 已选中1个元素,您可以:\n 确认采集 取消选择 Path: //html \n"}],"unique_index":"d8of3rzoypelpr7n0qm","iframe":false,"default":"12345","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"alert(eval(\"self.a+2+int('1')\"))","afterJSWaitTime":0,"downloadPic":0}]}},{"id":2,"index":4,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"self.a = 1\nself.b = \"45\"","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":4,"index":5,"parentId":0,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":false,"position":3,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":0,"code":"console.log(\"Field[\"参数1_文本\"]Field[\"参数1_文本\"]\")","waitTime":0,"recordASField":0,"paraType":"text"}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/221.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/221.json index d0212ac..3ff45cd 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/221.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/221.json @@ -1,889 +1 @@ -{ - "id": 221, - "name": "不固定元素列表测试:【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名", - "url": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "links": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "create_time": "12/5/2023, 4:12:11 AM", - "update_time": "12/10/2023, 5:56:54 AM", - "version": "0.6.0", - "saveThreshold": 10, - "quitWaitTime": 60, - "environment": 0, - "maximizeWindow": 0, - "maxViewLength": 15, - "recordLog": 1, - "outputFormat": "xlsx", - "saveName": "current_time", - "inputExcel": "", - "startFromExit": 0, - "pauseKey": "p", - "containJudge": false, - "desc": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "inputParameters": [ - { - "id": 0, - "name": "urlList_0", - "nodeId": 1, - "nodeName": "打开网页", - "value": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "desc": "要采集的网址列表,多行以\\n分开", - "type": "text", - "exampleValue": "https://www.shanghairanking.cn/rankings/bcsr/2023" - }, - { - "id": 1, - "name": "loopTimes_循环点击单个元素_1", - "nodeId": 6, - "nodeName": "循环点击单个元素", - "desc": "循环循环点击单个元素执行的次数(0代表无限循环)", - "type": "int", - "exampleValue": 0, - "value": 0 - } - ], - "outputParameters": [ - { - "id": 0, - "name": "参数1_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "1" - }, - { - "id": 1, - "name": "参数2_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "1" - }, - { - "id": 2, - "name": "参数3_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "前3%" - }, - { - "id": 3, - "name": "参数4_图片地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "https://www.shanghairanking.cn/_uni/logo/28312850.png" - }, - { - "id": 4, - "name": "参数5_链接文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "复旦大学\n " - }, - { - "id": 5, - "name": "参数6_链接地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "/institution/fudan-university" - }, - { - "id": 6, - "name": "参数7_图片地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "/_nuxt/img/uncollection.388fe56.svg" - }, - { - "id": 7, - "name": "参数8_链接文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "\n " - }, - { - "id": 8, - "name": "参数9_链接地址", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "/institution/fudan-university" - }, - { - "id": 9, - "name": "参数10_文本", - "desc": "", - "type": "text", - "recordASField": 1, - "exampleValue": "1044" - }, - { - "id": 10, - "name": "发送邮件123", - "desc": "自定义操作返回的数据", - "type": "text", - "recordASField": 0, - "exampleValue": "" - } - ], - "graph": [ - { - "index": 0, - "id": 0, - "parentId": 0, - "type": -1, - "option": 0, - "title": "root", - "sequence": [1, 8, 2], - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 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, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "url": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "links": "https://www.shanghairanking.cn/rankings/bcsr/2023", - "maxWaitTime": 10, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "cookies": "" - } - }, - { - "id": 3, - "index": 2, - "parentId": 0, - "type": 1, - "option": 8, - "title": "循环点击每个元素", - "sequence": [3, 6], - "isInLoop": false, - "position": 2, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 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": 4, - "index": 3, - "parentId": 3, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 4, - "tabIndex": -1, - "useLoop": true, - "xpath": "", - "iframe": false, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "alertHandleType": 0, - "allXPaths": "", - "loopType": 1, - "codeMode": -1 - } - }, - { - "id": 6, - "index": 4, - "parentId": 5, - "type": 1, - "option": 8, - "title": "循环采集数据", - "sequence": [5], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": false, - "xpath": "/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 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[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]", - "//tr[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]" - ] - } - }, - { - "id": 8, - "index": 5, - "parentId": 6, - "type": 0, - "option": 3, - "title": "提取数据", - "sequence": [], - "isInLoop": true, - "position": 0, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "params": [ - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数1_文本", - "desc": "", - "relativeXPath": "/td[1]/div[1]", - "allXPaths": [ - "/td[1]/div[1]", - "//div[contains(., '')]", - "//DIV[@class='ranking']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div" - ], - "exampleValues": [{ "num": 0, "value": "1" }], - "unique_index": "/td[1]/div[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数2_文本", - "desc": "", - "relativeXPath": "/td[2]/span[1]", - "allXPaths": [ - "/td[2]/span[1]", - "//span[contains(., '1')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span" - ], - "exampleValues": [{ "num": 0, "value": "1" }], - "unique_index": "/td[2]/span[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "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(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]" - ], - "exampleValues": [{ "num": 0, "value": "前3%" }], - "unique_index": "/td[3]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数4_图片地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[1]/img[1]", - "allXPaths": [ - "/td[4]/div[1]/div[1]/img[1]", - "//img[contains(., '')]", - "//IMG[@class='univ-logo']", - "//IMG[@alt='复旦大学']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img" - ], - "exampleValues": [ - { - "num": 0, - "value": "https://www.shanghairanking.cn/_uni/logo/28312850.png" - } - ], - "unique_index": "/td[4]/div[1]/div[1]/img[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数5_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "//a[contains(., '复旦大学')]", - "//A[@class='name-cn']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "复旦大学\n " }], - "unique_index": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数6_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "//a[contains(., '复旦大学')]", - "//A[@class='name-cn']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a" - ], - "exampleValues": [ - { "num": 0, "value": "/institution/fudan-university" } - ], - "unique_index": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 4, - "contentType": 1, - "relative": true, - "name": "参数7_图片地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]", - "//img[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img" - ], - "exampleValues": [ - { "num": 0, "value": "/_nuxt/img/uncollection.388fe56.svg" } - ], - "unique_index": "/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 1, - "contentType": 0, - "relative": true, - "name": "参数8_链接文本", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '')]", - "//A[@class='name-en']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a" - ], - "exampleValues": [{ "num": 0, "value": "\n " }], - "unique_index": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 2, - "contentType": 0, - "relative": true, - "name": "参数9_链接地址", - "desc": "", - "relativeXPath": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "allXPaths": [ - "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "//a[contains(., '')]", - "//A[@class='name-en']", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a" - ], - "exampleValues": [ - { "num": 0, "value": "/institution/fudan-university" } - ], - "unique_index": "/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - }, - { - "nodeType": 0, - "contentType": 1, - "relative": true, - "name": "参数10_文本", - "desc": "", - "relativeXPath": "/td[5]", - "allXPaths": [ - "/td[5]", - "//td[contains(., '')]", - "/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td" - ], - "exampleValues": [{ "num": 0, "value": "1044" }], - "unique_index": "/td[5]", - "iframe": false, - "default": "", - "paraType": "text", - "recordASField": 1, - "beforeJS": "", - "beforeJSWaitTime": 0, - "JS": "", - "JSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "downloadPic": 0 - } - ] - } - }, - { - "id": 5, - "index": 6, - "parentId": 3, - "type": 1, - "option": 8, - "title": "循环点击单个元素", - "sequence": [4, 7], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": false, - "xpath": "//*[contains(@class, \"ant-pagination-next\")]/a[1]", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 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[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]", - "//a[contains(., '')]", - "//A[@class='ant-pagination-item-link']", - "/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a" - ], - "codeMode": -1 - } - }, - { - "id": 7, - "index": 7, - "parentId": 5, - "type": 0, - "option": 2, - "title": "点击元素", - "sequence": [], - "isInLoop": true, - "position": 1, - "parameters": { - "history": 5, - "tabIndex": -1, - "useLoop": true, - "xpath": "", - "iframe": false, - "wait": 2, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "scrollType": 0, - "scrollCount": 1, - "scrollWaitTime": 1, - "clickWay": 0, - "maxWaitTime": 10, - "params": [], - "alertHandleType": 0, - "allXPaths": [ - "/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]", - "//a[contains(., '')]", - "//A[@class='ant-pagination-item-link']", - "/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a" - ], - "loopType": 0 - } - }, - { - "id": 2, - "index": 8, - "parentId": 0, - "type": 0, - "option": 5, - "title": "发送邮件123", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "9", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "smtp.163.co23m", - "port": "465", - "username": "test@163.com", - "password": "asdf", - "from": "", - "to": "test@163.com", - "subject": "123", - "content": "434" - } - } - }, - { - "id": -1, - "index": 9, - "parentId": 0, - "type": 0, - "option": 5, - "title": "暂停程序", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "7", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "", - "port": 465, - "username": "", - "password": "", - "from": "", - "to": "", - "subject": "", - "content": "" - } - } - }, - { - "id": -1, - "index": 10, - "parentId": 0, - "type": 0, - "option": 5, - "title": "执行JavaScript", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "0", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "", - "port": 465, - "username": "", - "password": "", - "from": "", - "to": "", - "subject": "", - "content": "" - } - } - }, - { - "id": -1, - "index": 11, - "parentId": 0, - "type": 0, - "option": 5, - "title": "暂停程序dfgs", - "sequence": [], - "isInLoop": false, - "position": 1, - "parameters": { - "history": 1, - "tabIndex": 0, - "useLoop": false, - "xpath": "", - "iframe": false, - "wait": 0, - "waitType": 0, - "beforeJS": "", - "beforeJSWaitTime": 0, - "afterJS": "", - "afterJSWaitTime": 0, - "waitElement": "", - "waitElementTime": 10, - "waitElementIframeIndex": 0, - "clear": 0, - "newLine": 1, - "codeMode": "7", - "code": "", - "waitTime": 0, - "recordASField": 0, - "paraType": "text", - "emailConfig": { - "host": "", - "port": 465, - "username": "", - "password": "", - "from": "", - "to": "", - "subject": "", - "content": "" - } - } - } - ] -} +{"id":221,"name":"不固定元素列表测试:【软科排名】-中国最好学科排名|最权威的大学学科|高校学科排名","url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","create_time":"12/5/2023, 4:12:11 AM","update_time":"12/13/2023, 3:06:51 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"desc":"https://www.shanghairanking.cn/rankings/bcsr/2023","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.shanghairanking.cn/rankings/bcsr/2023","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.shanghairanking.cn/rankings/bcsr/2023"},{"id":1,"name":"loopTimes_循环点击单个元素_1","nodeId":6,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"前3%"},{"id":3,"name":"参数4_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://www.shanghairanking.cn/_uni/logo/28312850.png"},{"id":4,"name":"参数5_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"复旦大学\n "},{"id":5,"name":"参数6_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":6,"name":"参数7_图片地址","desc":"","type":"text","recordASField":1,"exampleValue":"/_nuxt/img/uncollection.388fe56.svg"},{"id":7,"name":"参数8_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"\n "},{"id":8,"name":"参数9_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"/institution/fudan-university"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"1044"},{"id":10,"name":"自定义参数_1","desc":"","type":"text","recordASField":1,"exampleValue":"自定义值"},{"id":11,"name":"发送邮件123","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,8,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.shanghairanking.cn/rankings/bcsr/2023","links":"https://www.shanghairanking.cn/rankings/bcsr/2023","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":3,"index":2,"parentId":0,"type":1,"option":8,"title":"循环点击每个元素","sequence":[3,6],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div/div[2]/div/a[1]/span[2]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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":4,"index":3,"parentId":3,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":"","loopType":1,"codeMode":-1,"newTab":1}},{"id":6,"index":4,"parentId":5,"type":1,"option":8,"title":"循环采集数据","sequence":[5],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]","//tr[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]"]}},{"id":8,"index":5,"parentId":6,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[1]/div[1]","allXPaths":["/td[1]/div[1]","//div[contains(., '')]","//DIV[@class='ranking']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-4]/div"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[1]/div[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数2_文本","desc":"","relativeXPath":"/td[2]/span[1]","allXPaths":["/td[2]/span[1]","//span[contains(., '1')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-3]/span"],"exampleValues":[{"num":0,"value":"1"}],"unique_index":"/td[2]/span[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-2]"],"exampleValues":[{"num":0,"value":"前3%"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数4_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='univ-logo']","//IMG[@alt='复旦大学']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div[last()-1]/img"],"exampleValues":[{"num":0,"value":"https://www.shanghairanking.cn/_uni/logo/28312850.png"}],"unique_index":"/td[4]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数5_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"复旦大学\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数6_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","//a[contains(., '复旦大学')]","//A[@class='name-cn']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":4,"contentType":1,"relative":true,"name":"参数7_图片地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","allXPaths":["/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","//img[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div[last()-1]/div/div/div/img"],"exampleValues":[{"num":0,"value":"/_nuxt/img/uncollection.388fe56.svg"}],"unique_index":"/td[4]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/img[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":1,"contentType":0,"relative":true,"name":"参数8_链接文本","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"\n "}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":2,"contentType":0,"relative":true,"name":"参数9_链接地址","desc":"","relativeXPath":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","allXPaths":["/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","//a[contains(., '')]","//A[@class='name-en']","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td[last()-1]/div/div/div/div/div/a"],"exampleValues":[{"num":0,"value":"/institution/fudan-university"}],"unique_index":"/td[4]/div[1]/div[2]/div[2]/div[1]/div[1]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":1,"relative":true,"name":"参数10_文本","desc":"","relativeXPath":"/td[5]","allXPaths":["/td[5]","//td[contains(., '')]","/html/body/div[last()-3]/div/div/div[last()-1]/div/div/div/div[last()-1]/div/div[last()-1]/table/tbody/tr[last()-29]/td"],"exampleValues":[{"num":0,"value":"1044"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"自定义参数_1","desc":"","iframe":false,"extractType":0,"relativeXPath":"//body","recordASField":1,"allXPaths":[],"exampleValues":[{"num":0,"value":"自定义值"}],"default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0,"paraType":"text"}]}},{"id":5,"index":6,"parentId":3,"type":1,"option":8,"title":"循环点击单个元素","sequence":[4,7],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"ant-pagination-next\")]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"],"codeMode":-1}},{"id":7,"index":7,"parentId":5,"type":0,"option":2,"title":"点击元素","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":5,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"allXPaths":["/html/body/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[2]/div[1]/div[1]/ul[1]/li[5]/a[1]","//a[contains(., '')]","//A[@class='ant-pagination-item-link']","/html/body/div[last()-3]/div/div/div[last()-2]/div/div/div/div[last()-1]/div/ul/li[last()-1]/a"],"loopType":0}},{"id":2,"index":8,"parentId":0,"type":0,"option":5,"title":"发送邮件123","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"9","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"smtp.163.co23m","port":"465","username":"test@163.com","password":"asdf","from":"","to":"test@163.com","subject":"123","content":"434"}}},{"id":-1,"index":9,"parentId":0,"type":0,"option":5,"title":"暂停程序","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"7","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":10,"parentId":0,"type":0,"option":5,"title":"执行JavaScript","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"0","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}},{"id":-1,"index":11,"parentId":0,"type":0,"option":5,"title":"暂停程序dfgs","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"7","code":"","waitTime":0,"recordASField":0,"paraType":"text","emailConfig":{"host":"","port":465,"username":"","password":"","from":"","to":"","subject":"","content":""}}}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/237.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/237.json index 025e091..3e90d13 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/237.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/237.json @@ -1 +1 @@ -{"id":237,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/9/2023, 3:36:47 AM","update_time":"12/11/2023, 4:27:41 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":false,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环点击单个元素_2","nodeId":5,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"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":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"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":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环点击单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[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"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":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"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[8],"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","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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":9,"index":8,"parentId":7,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","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(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"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(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"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(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"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[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}}]} \ No newline at end of file +{"id":237,"name":"EXEC自定义函数示例:中国地震台网——历史查询","url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","create_time":"12/9/2023, 3:36:47 AM","update_time":"12/12/2023, 7:12:50 AM","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","inputExcel":"","startFromExit":0,"pauseKey":"k","containJudge":true,"desc":"https://www.ceic.ac.cn/history","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.ceic.ac.cn/history","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.ceic.ac.cn/history"},{"id":1,"name":"loopText_1","nodeId":2,"nodeName":"循环","desc":"要输入的文本/网址,多行以\\n分开","type":"text","exampleValue":"15\n25\n35","value":"15\n25\n35"},{"id":2,"name":"loopTimes_循环点击单个元素_2","nodeId":5,"nodeName":"循环点击单个元素","desc":"循环循环点击单个元素执行的次数(0代表无限循环)","type":"int","exampleValue":0,"value":0}],"outputParameters":[{"id":0,"name":"参数1_文本","desc":"","type":"text","recordASField":1,"exampleValue":"3.7"},{"id":1,"name":"参数2_文本","desc":"","type":"text","recordASField":1,"exampleValue":"2023-11-3003:44:10"},{"id":2,"name":"参数3_文本","desc":"","type":"text","recordASField":1,"exampleValue":"37.53"},{"id":3,"name":"参数4_文本","desc":"","type":"text","recordASField":1,"exampleValue":"112.47"},{"id":4,"name":"参数5_文本","desc":"","type":"text","recordASField":1,"exampleValue":"28"},{"id":5,"name":"参数6_链接文本","desc":"","type":"text","recordASField":1,"exampleValue":"山西太原市清徐县"},{"id":6,"name":"参数7_链接地址","desc":"","type":"text","recordASField":1,"exampleValue":"https://news.ceic.ac.cn/CC20231130034410.html"},{"id":7,"name":"参数8_文本","desc":"","type":"text","recordASField":1,"exampleValue":"震级(M)"},{"id":8,"name":"参数9_文本","desc":"","type":"text","recordASField":1,"exampleValue":"发震时刻(UTC+8)"},{"id":9,"name":"参数10_文本","desc":"","type":"text","recordASField":1,"exampleValue":"纬度(°)"},{"id":10,"name":"参数11_文本","desc":"","type":"text","recordASField":1,"exampleValue":"经度(°)"},{"id":11,"name":"参数12_文本","desc":"","type":"text","recordASField":1,"exampleValue":"深度(千米)"},{"id":12,"name":"参数13_文本","desc":"","type":"text","recordASField":1,"exampleValue":"参考位置"},{"id":13,"name":"自定义操作","desc":"自定义操作返回的数据","type":"text","recordASField":0,"exampleValue":""}],"graph":[{"index":0,"id":0,"parentId":0,"type":-1,"option":0,"title":"root","sequence":[1,2],"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"url":"https://www.ceic.ac.cn/history","links":"https://www.ceic.ac.cn/history","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[3,4,9,5],"isInLoop":false,"position":1,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"loopType":"3","pathList":"","textList":"15\n25\n35","code":"","waitTime":0,"exitCount":0,"historyWait":2,"breakMode":0,"breakCode":"","breakCodeWaitTime":0}},{"id":3,"index":3,"parentId":2,"type":0,"option":4,"title":"输入文字","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"//*[@id=\"weidu1\"]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"value":"1","index":0,"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":4,"index":4,"parentId":2,"type":0,"option":2,"title":"点击查询","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[@id=\"search\"]","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":0,"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":6,"index":5,"parentId":2,"type":1,"option":8,"title":"循环点击单个元素","sequence":[7,6],"isInLoop":true,"position":3,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"//*[contains(@class, \"pagination\")]/ul[1]/li[last()-1]/a[1]","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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[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"]}},{"id":8,"index":6,"parentId":6,"type":0,"option":2,"title":"点击»","sequence":[],"isInLoop":true,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":true,"xpath":"","iframe":false,"wait":2,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"clickWay":0,"maxWaitTime":10,"params":[],"alertHandleType":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"],"loopType":0}},{"id":7,"index":7,"parentId":6,"type":1,"option":8,"title":"循环采集数据","sequence":[10],"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","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":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":12,"index":8,"parentId":10,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":true,"position":0,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"params":[{"nodeType":0,"contentType":1,"relative":true,"name":"参数1_文本","desc":"","relativeXPath":"/td[eval(\"self.test()\")]","allXPaths":["/td[1]","//td[contains(., '3.7')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-5]"],"exampleValues":[{"num":0,"value":"3.7"}],"unique_index":"/td[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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-11-30')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-4]"],"exampleValues":[{"num":0,"value":"2023-11-3003:44:10"}],"unique_index":"/td[2]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"arguments[0].innerText = \"123\"","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(., '37.53')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-3]"],"exampleValues":[{"num":0,"value":"37.53"}],"unique_index":"/td[3]","iframe":false,"default":"","paraType":"text","recordASField":1,"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(., '112.47')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-2]"],"exampleValues":[{"num":0,"value":"112.47"}],"unique_index":"/td[4]","iframe":false,"default":"","paraType":"text","recordASField":1,"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(., '28')]","/html/body/div[last()-3]/div[last()-1]/div/div/div/div/div[last()-1]/table/tbody/tr[last()-19]/td[last()-1]"],"exampleValues":[{"num":0,"value":"28"}],"unique_index":"/td[5]","iframe":false,"default":"","paraType":"text","recordASField":1,"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[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"山西太原市清徐县"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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[last()-19]/td/a"],"exampleValues":[{"num":0,"value":"https://news.ceic.ac.cn/CC20231130034410.html"}],"unique_index":"/td[6]/a[1]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"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]","iframe":false,"default":"","paraType":"text","recordASField":1,"beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}],"loopType":1}},{"id":5,"index":9,"parentId":2,"type":0,"option":5,"title":"自定义操作","sequence":[],"isInLoop":true,"position":2,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"clear":0,"newLine":1,"codeMode":"5","code":"def test():\n a = 1\n print(\"AMESSAGE:\",a)\n return a\nself.test =test","waitTime":0,"recordASField":0,"paraType":"text"}},{"id":9,"index":10,"parentId":7,"type":2,"option":9,"title":"判断条件","sequence":[11,12],"isInLoop":true,"position":0,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0}},{"id":10,"parentId":9,"index":11,"type":3,"option":10,"title":"条件分支1","sequence":[8],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":1,"value":"39.78","code":"","waitTime":0},"position":0},{"id":11,"parentId":9,"index":12,"type":3,"option":10,"title":"条件分支2","sequence":[],"isInLoop":true,"parameters":{"history":1,"tabIndex":0,"useLoop":false,"xpath":"","iframe":false,"wait":0,"waitType":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"waitElement":"","waitElementTime":10,"waitElementIframeIndex":0,"class":0,"value":"","code":"","waitTime":0},"position":1}]} \ No newline at end of file diff --git a/.temp_to_pub/EasySpider_Linux_x64/tasks/95.json b/.temp_to_pub/EasySpider_Linux_x64/tasks/95.json index 2d6f084..927cec6 100644 --- a/.temp_to_pub/EasySpider_Linux_x64/tasks/95.json +++ b/.temp_to_pub/EasySpider_Linux_x64/tasks/95.json @@ -1 +1 @@ -{"id":95,"name":"详情页+图片","url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","create_time":"5/31/2023, 11:28:40 PM","version":"0.3.2","containJudge":false,"desc":"https://www.dongchedi.com/article/7238974191096152615","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.dongchedi.com/article/7238974191096152615\n","desc":"要采集的网址列表,多行以\\n分开","type":"string","exampleValue":"https://www.dongchedi.com/article/7238974191096152615\n"}],"outputParameters":[{"id":0,"name":"参数1_图片页面标题","desc":"","type":"string","exampleValue":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"},{"id":1,"name":"参数1_文本","desc":"","type":"string","exampleValue":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"},{"id":2,"name":"参数1_图片地址","desc":"","type":"string","exampleValue":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"}],"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":3,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1}},{"id":2,"index":2,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":4,"contentType":6,"relative":false,"name":"参数1_图片页面标题","desc":"","extractType":0,"relativeXPath":"/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='zoom']","//IMG[@alt='6月上市/7月开始交付 腾势N7新增两项盲订权益']"],"exampleValues":[{"num":0,"value":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"}],"unique_index":"x9gqjnh9rrlibuxxs5","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"id(\"article\")","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]","//section[contains(., '在此前的上海车展上,')]","id(\"article\")","//SECTION[@class='jsx-3371063651 article-content']"],"exampleValues":[{"num":0,"value":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"}],"unique_index":"t4lzv1jbgl8libuy9uj","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":3,"index":3,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[4],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"id(\"article\")//img","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[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]/div[1]/img[1]","//img[contains(., '')]"]}},{"id":4,"index":4,"parentId":3,"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,"params":[{"nodeType":4,"contentType":0,"relative":true,"name":"参数1_图片地址","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"},{"num":1,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/f42b230d05a94aa8ba1b401e51111b46~noop.webp?x-expires=1688138568&x-signature=muye%2BsHfzS2YB19jW8RX3GNCIu4%3D"},{"num":2,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/4e1e272d4a2e4504b028abaa3bd0b602~noop.webp?x-expires=1688138568&x-signature=z32YraHeUVvQ7D73yJWYYTkdeEY%3D"},{"num":3,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/3eb96902ad214f169c30ecdbd0456e76~noop.webp?x-expires=1688138568&x-signature=S6%2BlLKW8fc%2FzSy39gk7p%2BrwVLfw%3D"},{"num":4,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/c16e96f7eed54b6983b6dc064776e9f2~noop.webp?x-expires=1688138568&x-signature=PR2cOC8A1Fd8sb14aBjjIc6FS1w%3D"},{"num":5,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/89bf50f0e23b4dfd8d0c9614f2502f8f~noop.webp?x-expires=1688138568&x-signature=vLP%2BB9Ta5LXHaoOLl%2FJHgK09vbM%3D"},{"num":6,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/59839b2298904b33b0af786a983f7ac8~noop.webp?x-expires=1688138568&x-signature=hg4C25lg0C3C44CQL5thKUcMrAk%3D"}],"unique_index":"8wt7k80ok99libv0xhq","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}],"loopType":1}}]} \ No newline at end of file +{"id":95,"name":"详情页+图片","url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","create_time":"5/31/2023, 11:28:40 PM","update_time":"21/12/2023, 14:39:17","version":"0.6.0","saveThreshold":10,"quitWaitTime":60,"environment":0,"maximizeWindow":0,"maxViewLength":15,"recordLog":1,"outputFormat":"xlsx","saveName":"current_time","dataWriteMode":1,"inputExcel":"","startFromExit":0,"pauseKey":"p","containJudge":false,"browser":"chrome","removeDuplicate":0,"desc":"https://www.dongchedi.com/article/7238974191096152615","inputParameters":[{"id":0,"name":"urlList_0","nodeId":1,"nodeName":"打开网页","value":"https://www.dongchedi.com/article/7238974191096152615\n","desc":"要采集的网址列表,多行以\\n分开","type":"text","exampleValue":"https://www.dongchedi.com/article/7238974191096152615\n"}],"outputParameters":[{"id":0,"name":"参数1_图片页面标题","desc":"","exampleValue":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"},{"id":1,"name":"参数1_文本","desc":"","exampleValue":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"},{"id":2,"name":"参数1_图片地址","desc":"","exampleValue":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"}],"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":3,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"url":"https://www.dongchedi.com/article/7238974191096152615","links":"https://www.dongchedi.com/article/7238974191096152615\n","maxWaitTime":10,"scrollType":0,"scrollCount":1,"scrollWaitTime":1,"cookies":""}},{"id":2,"index":2,"parentId":0,"type":0,"option":3,"title":"提取数据","sequence":[],"isInLoop":false,"position":1,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"","wait":0,"beforeJS":"","beforeJSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"params":[{"nodeType":4,"contentType":6,"relative":false,"name":"参数1_图片页面标题","desc":"","extractType":0,"relativeXPath":"/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/aside[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/a[1]/div[1]/img[1]","//img[contains(., '')]","//IMG[@class='zoom']","//IMG[@alt='6月上市/7月开始交付 腾势N7新增两项盲订权益']"],"exampleValues":[{"num":0,"value":"腾势N7将上市,两种前脸,外观很年轻运动,续航702km_懂车帝"}],"unique_index":"x9gqjnh9rrlibuxxs5","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0},{"nodeType":0,"contentType":0,"relative":false,"name":"参数1_文本","desc":"","extractType":0,"relativeXPath":"id(\"article\")","allXPaths":["/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]","//section[contains(., '在此前的上海车展上,')]","id(\"article\")","//SECTION[@class='jsx-3371063651 article-content']"],"exampleValues":[{"num":0,"value":"在此前的上海车展上,腾势N7(图片)已经正式开始盲订,近日关于该车的更多信息曝光,据悉,新车将会在6月份正式上市,7-8月份正式开始交付。腾势N7最低售价:暂无报价图片参数配置暂无报价懂车分暂无懂车实测暂无车友圈4819车友热议二手车暂无而除了此前亮相的版本,近日又一新前脸的版本实车也正式亮相了,新车的版本前杠上的灯带造型重新设计,和此前版本矩阵式光源的灯带不同,新版本是一体式的弧形灯带。据悉,正式上市的版本将会使用两种风格的前脸,可以满足不同审美的消费者。腾势N7的侧面采用了轿跑风格设计,较短的前后悬看上去很动感,整个侧面线条很简洁干练。尺寸上,新车长宽高分别为4860/1935/1602mm,轴距为2940mm,定位中型SUV。车尾部分,车顶使用了镂空式的尾翼,贯穿式的尾灯造型很别致,后杠两侧上部带有导流槽设计,底部使用了空气动力学设计,整体视觉效果很年轻运动。内饰部分使用了全新的设计风格,副驾驶一侧造型和主驾一侧对称,而且也带有一块大屏,包括空调控制区域还有一块单独的触控屏幕,科技感十足。新车采用的是2+3的5座布局,前后座椅都很宽大厚实,其中前排座椅是一体式运动风格的靠背设计。后排座椅支持比例放倒,可以更灵活的扩展空间。动力部分,新车会有两驱和四驱版本,两驱版电机最大功率230千瓦,四驱版前后电机的最大功率分别为160千瓦和230千瓦。根据此前的申报信息显示,新车续航会有630km和702km两种版本。另外新车还将提供双枪超充功能,充电15分钟续航350公里。"}],"unique_index":"t4lzv1jbgl8libuy9uj","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":0}]}},{"id":3,"index":3,"parentId":0,"type":1,"option":8,"title":"循环","sequence":[4],"isInLoop":false,"position":2,"parameters":{"history":4,"tabIndex":-1,"useLoop":false,"xpath":"id(\"article\")//img","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[1]/div[2]/div[1]/div[1]/div[1]/main[1]/section[1]/div[1]/article[1]/div[2]/div[1]/section[1]/div[1]/img[1]","//img[contains(., '')]"]}},{"id":4,"index":4,"parentId":3,"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,"params":[{"nodeType":4,"contentType":0,"relative":true,"name":"参数1_图片地址","desc":"","extractType":0,"relativeXPath":"","allXPaths":"","exampleValues":[{"num":0,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/fd9c256019014fb2bca7e89733cc9223~noop.webp?x-expires=1688138568&x-signature=Yj0YXJiAPZTVW2RvGviggLj3sjs%3D"},{"num":1,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/f42b230d05a94aa8ba1b401e51111b46~noop.webp?x-expires=1688138568&x-signature=muye%2BsHfzS2YB19jW8RX3GNCIu4%3D"},{"num":2,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/4e1e272d4a2e4504b028abaa3bd0b602~noop.webp?x-expires=1688138568&x-signature=z32YraHeUVvQ7D73yJWYYTkdeEY%3D"},{"num":3,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/3eb96902ad214f169c30ecdbd0456e76~noop.webp?x-expires=1688138568&x-signature=S6%2BlLKW8fc%2FzSy39gk7p%2BrwVLfw%3D"},{"num":4,"value":"https://p3-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/c16e96f7eed54b6983b6dc064776e9f2~noop.webp?x-expires=1688138568&x-signature=PR2cOC8A1Fd8sb14aBjjIc6FS1w%3D"},{"num":5,"value":"https://p9-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/89bf50f0e23b4dfd8d0c9614f2502f8f~noop.webp?x-expires=1688138568&x-signature=vLP%2BB9Ta5LXHaoOLl%2FJHgK09vbM%3D"},{"num":6,"value":"https://p6-dcd-sign.byteimg.com/tos-cn-i-qvj2lq49k0/59839b2298904b33b0af786a983f7ac8~noop.webp?x-expires=1688138568&x-signature=hg4C25lg0C3C44CQL5thKUcMrAk%3D"}],"unique_index":"8wt7k80ok99libv0xhq","default":"","beforeJS":"","beforeJSWaitTime":0,"JS":"","JSWaitTime":0,"afterJS":"","afterJSWaitTime":0,"downloadPic":1}],"loopType":1}}]} \ No newline at end of file diff --git a/ElectronJS/EasySpider_en.crx b/ElectronJS/EasySpider_en.crx deleted file mode 100644 index 84c8740402be87b0c68573ea8b408b2547cc6755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211370 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 &!CUd)oANjn0p6N4=?Aj?kvD1VB7*wQ}R&jM{ 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 diff --git a/ElectronJS/EasySpider_zh.crx b/ElectronJS/EasySpider_zh.crx deleted file mode 100644 index cea8078fe35a7364b8fc6dbdc772b2e6cfc10c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211371 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
z
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

diff --git a/ElectronJS/package_linux64.sh b/ElectronJS/package_linux64.sh
index 2214fde..46a6472 100755
--- a/ElectronJS/package_linux64.sh
+++ b/ElectronJS/package_linux64.sh
@@ -36,4 +36,4 @@ rm -rf  ../.temp_to_pub/EasySpider_Linux_x64/Data
 mkdir ../.temp_to_pub/EasySpider_Linux_x64/Data
 rm EasySpider_zh.crx
 rm EasySpider_en.crx
-cp -Rf ../tasks/* ../.temp_to_pub/EasySpider_Linux_x64/tasks
+cp -Rf ./tasks/* ../.temp_to_pub/EasySpider_Linux_x64/tasks
diff --git a/ExecuteStage/generateExecutable_Linux64.sh b/ExecuteStage/generateExecutable_Linux64.sh
index 3ee6cd0..d6e269a 100755
--- a/ExecuteStage/generateExecutable_Linux64.sh
+++ b/ExecuteStage/generateExecutable_Linux64.sh
@@ -1,5 +1,5 @@
 rm -r build
 rm -r dist
-pyinstaller -F --icon=favicon.ico easyspider_executestage.py
+pyinstaller -F --icon=favicon.ico --add-data "/home/naibo/miniconda3/lib/python3.8/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-38-x86_64-linux-gnu.so:onnxruntime/capi"  --add-data "/home/naibo/miniconda3/lib/python3.8/site-packages/ddddocr/common_old.onnx:ddddocr" easyspider_executestage.py
 rm ../ElectronJS/chrome_linux64/easyspider_executestage
 cp dist/easyspider_executestage ../ElectronJS/chrome_linux64/easyspider_executestage