Back to Easyspider

设计流程

ElectronJS/src/taskGrid/FlowChart_CN.html

0.6.319.2 KB
Original Source

× 提示:保存成功!

× 提示:您加载的任务版本不是最新版,可能出现兼容性问题。

× 提示:保存名不符合MySQL表名规范,请重试!

工具箱 保存任务打开网页点击元素提取数据输入文字自定义操作切换下拉选项移动到元素循环判断条件

调整锚点剪切元素复制元素删除元素取消操作 提示:拖动上方按钮到流程图箭头处以添加操作,也可以点击按钮再点击箭头。

等价XPath

×

以下提供除默认生成的XPath外其余等价的XPath,都能定位到同一个元素(但不完全准确,可能可以定位到除该元素外的其他元素,因此只是提供在这里作为参考)。 每行一个XPath(可使用预装的XPath Helper扩展调试):{{XPaths}}

提示:鼠标移到笑脸可查看提示,在流程图中 双击 操作可 试运行 (页面完全加载完毕后), 右键 点击操作查看更多选项。选项名称:

使用循环内的链接

链接池(每行一个链接,有多少行链接整个任务流程就会被执行多少次):链接(只能填写一个链接,因为是手动添加的打开网页操作): 页面加载最长等待时间(秒):打开网页后是否向下滚动:不滚动向下滚动一屏滚动到底部一直滚动直到页面内容无变化(需设置好滚动后的等待时间用于检测页面变化)滚动次数(滚动类型设置为 不滚动一直滚动 时请忽略此项):滚动后等待时间(秒):

点此展开/折叠自定义操作

加载后设置Cookies:

点击获取当前页面Cookie

元素在iframe内

使用相对循环内的XPath定位到的元素

XPath(或者用point(10,10)表示点击网页坐标位置(10, 10)以用来点击空白区域推出弹窗对话框文本列表等): ☺

点此查看其他等价的XPath

任务运行时最终定位的本元素XPath:

点此展开/折叠自定义操作

点击该元素 针对该元素执行一段JavaScript脚本: 最长等待脚本执行时间(0代表无限等待): 点击该元素 针对该元素执行一段JavaScript脚本: 最长等待脚本执行时间(0代表无限等待):

点击后页面加载最长等待时间(秒):点击类型(如是否双击):Selenium点击JavaScript点击双击在新标签页打开超链接:是否点击后是否向下滚动页面:不滚动向下滚动一屏滚动到底部一直滚动直到页面内容无变化(需设置好滚动后的等待时间用于检测页面变化)滚动次数(滚动类型设置为 不滚动一直滚动 时请忽略此项):滚动后等待时间(秒):文件下载最长等待时间(秒):点击元素后如有弹窗出现,弹窗处理方式:

无弹窗接受弹窗(点击弹窗确定按钮)拒绝弹窗(点击弹窗取消按钮,仅限Confirm弹框)

新增字段

提取数据前清空其他操作字段已记录的值

此提取数据操作后生成新数据行 ☺

字段名 | 示例值 | 操作 |

| | {{params.parameters[i-1]["exampleValues"][0]["value"]}} | 修改删除上移下移 |

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

{{params.parameters[paraIndex]["name"]}}

使用相对循环内的XPATH

元素在iframe内

XPath(所有XPath内均可用Field["字段名"]表示参数值,用eval("你的代码")来替换成自定义的变量): ☺

点此查看其他等价的XPath

任务运行时最终定位的本字段XPath:{{getFinalXPath(params.parameters[paraIndex]['relativeXPath'], params.parameters[paraIndex]['relative'])}} 试运行(只测试第一个匹配到的元素)

点此展开/折叠自定义操作

提取该元素数据 针对该元素执行一段JavaScript脚本: 最长等待脚本执行时间(0代表无限等待): 提取该元素数据 针对该元素执行一段JavaScript脚本: 最长等待脚本执行时间(0代表无限等待):

采集内容类型文本(包括子元素)文本(不包括子元素)innerHTMLouterHTML背景图片地址页面网址页面标题常量字符串元素截图OCR识别文字元素的属性值(针对该元素的)JavaScript代码返回值(需以return 开头)系统命令返回值执行环境下的Python表达式值(eval操作)当前选择框选中的选项值当前选择框选中的选项文本 常量字符串:

属性名称:

JavaScript(也可以不针对该元素,直接写return JS代码即可)/系统命令/Python代码:最长等待脚本执行时间(0代表无限等待): 节点类型普通节点链接文本链接地址表单值图片地址 提取图片地址后是否同时 下载图片 :否是 参数类型转换为(用于Excel和数据库):文本(单个值长度预估超过1万请选择大文本)整数(位数在9位以内)浮点数(小数)大文本(单个值长度超过1万低于100万)日期时间日期时间小文本(单个值长度小于50)超大文本(单个值长度超过100万)大整数(位数超过9位)元素找不到时的值:是否将内容换行(长文章采集想要换行时设置):否是是否保存该字段(只想把此字段当变量而不想保存时可选否):是否参数描述:

元素在iframe内

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

索引值(0表示使用整个当前循环的文本,如果大于0则表示当前文本用来分割开的文本索引取值,即如果当前循环的文本值为AB,则索引值为1表示输入A,2表示输入B,0表示输入A~B)

输入值(用Field["字段名"]来输入某字段/自定义操作的最新提取/返回值,用<enter>或<ENTER>表示模拟按下回车键),用JS("return JS代码")和eval("Python代码")来替换成JavaScript和Python代码返回值: XPath: ☺

点此查看其他等价的XPath

点此展开/折叠自定义操作

对该元素输入文字 针对该元素执行一段JavaScript脚本: 最长等待脚本执行时间(0代表无限等待): 对该元素输入文字 针对该元素执行一段JavaScript脚本: 最长等待脚本执行时间(0代表无限等待):

操作在iframe内

执行模式执行一段JavaScript脚本(如要获得返回值则需以return 开头)执行一段操作系统级别命令针对当前循环项的JavaScript脚本退出当前循环(Break操作)跳过当前循环后面的操作(Continue操作)在执行环境下运行Python代码(exec操作)在执行环境下获得Python表达式值(eval操作)暂停程序执行(如检测到验证码框出现时暂停执行)退出程序刷新页面发送邮件清空所有字段值生成新数据行 代码/脚本内容(用Field["字段名"]来输入某字段/自定义操作的最新提取/返回值):

请先阅读此说明,再在上方输入框(不是本框)写具体代码,如果要执行大量代码,可以直接写outside:myCode.py,这样程序就会读取并执行EasySpider目录下的myCode.py中的代码。
注意包含exec和eval操作的语句和XPath不能在当前页面试运行,只能在任务真正调用时运行。
此选项为高级功能,可以直接用Python代码操纵正在运行中的浏览器,及可以自定义整个执行环境中的变量,并对变量进行修改赋值等操作,示例:
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["字段名"]

如果想要将自己定义的变量作为字段记录,请选择下一个“在执行环境下获得Python表达式值(eval操作)”选项。

6. 如果想要引入并使用程序本身没有带的第三方库,需要先使用如pip等工具本地安装好此库,然后在import之前添加自己安装的库的路径,如:
(1)在系统命令行执行安装emotlib库命令:
pip install emotlib
(2)在代码框中写入如下代码:
sys.path.append("D:/Python38/Lib/site-packages") # 假设此路径下有emotlib库
import emotlib # 此时就可以使用emotlib库了
print(emotlib.emoji()) # 使用其中的函数。
请先阅读此说明,再在上方输入框(不是本框)写具体代码,如果要执行大量代码,可以直接写outside:myCode.py,这样程序就会读取并执行EasySpider目录下的myCode.py中的代码。
此选项为高级功能,可以直接返回Python代码的表达式值,并在其他位置用Field["本操作名称"]表示此操作返回值,示例:
1. 返回当前浏览器对象的相关值,用self.browser表示当前操作的浏览器,可直接用selenium的API进行操作,如self.browser.find_element(By.CSS_SELECTOR, "body").text即可返回当前页面的文字。
2. 返回自定义全局变量的值:self.myVar
3. 返回条件判断的值:self.myVar == 1
4. 判断某个字段提取的值是否等于某个变量的值:self.outputParameters["字段名"] == self.myVar

注意此功能不能对变量进行赋值操作,即不可以写self.myVar = 1这种,如果想要进行赋值操作,请选择上一个“在执行环境下运行Python代码(exec操作)”选项。

是否将执行后的输出/返回值作为字段记录:

否(仍可在任意操作中用Field["操作名"]表示此命令返回值)是(JavaScript脚本需要以return 开头)

参数类型转换为:文本(单个值长度预估超过1万请选择大文本)整数(位数在9位以内)浮点数(小数)大文本(单个值长度超过1万低于100万)日期时间日期时间小文本(单个值长度小于50)超大文本(单个值长度超过100万)大整数(位数超过9位)

记录前清空其他操作字段已记录的值:否是

此提取数据操作后生成新数据行:是否

最长等待脚本执行时间(0代表无限等待):

此操作可以暂停程序执行,如检测到验证码框出现时暂停执行,直到手动长按键盘自定义暂停/继续快捷键(默认:p键)后才继续执行。

此操作可以刷新当前页面。

此操作可以发送邮件,如用于爬虫任务完成后发送邮件通知。STMP邮件服务器主机:邮件服务器端口:发件人邮箱用户名:发件人邮箱密码(设置了密码注意不要轻易泄露任务文件!):收件人邮箱地址:邮件主题:邮件内容:

此操作可以清空所有字段值,如用于爬虫任务开始前清空所有字段值。

此操作可以生成新数据行,如用于爬虫任务设计时暂不生成数据行,等所有字段提取结束后统一生成新数据行。

元素在iframe内

使用循环内的索引值(不勾选则输入为下方“设定值”文本框内的内容,勾选后会使用所在“文本列表”循环内设置的下拉框索引值)

相对循环内文本索引值(0表示使用整个当前循环的文本当做索引值,如果大于0则表示当前循环的文本用来分割开的文本索引取值,即如果当前循环的文本值为23,这里填写2,则表示取文本第二项,即取值3,表示设置下拉框为第3项)

XPath:

点此查看其他等价的XPath

切换模式

切换到下一个选项按索引值切换选项(第一个选项索引值为0)按选项值切换选项按选项文本切换选项

设定值(不适用于切换到下一个选项模式)

元素在iframe内

使用相对循环内的XPath定位的元素

XPath:

点此查看其他等价的XPath

任务运行时最终定位的本元素XPath:

在iframe内操作

循环类型:单个元素(多用于循环点击下一页)不固定元素列表固定元素列表文本列表(多用于循环在文本框输入文本)网址列表(多用于循环打开网页)JavaScript命令返回值(需以return 开头)系统命令返回值执行环境下的Python表达式值(eval操作) XPath: ☺

(测试功能)点此查看其他可能的XPath写法

XPath列表:

内容列表(用Field["字段名"]来输入某字段/自定义操作的最新提取/返回值):

代码/脚本内容(用Field["字段名"]来输入某字段/自定义操作的最新提取/返回值):

请先阅读此说明,再在上方输入框(不是本框)写具体代码,如果要执行大量代码,可以直接写outside:myCode.py,这样程序就会读取并执行EasySpider目录下的myCode.py中的代码。
根据Python代码的表达式值来决定是否循环,示例:
1. 返回当前浏览器对象的相关值,用self.browser表示当前操作的浏览器,可直接用selenium的API进行操作,如self.browser.find_element(By.CSS_SELECTOR, "body").text=="123",表示判断当前页面是否为123这个文本。
2. 返回自定义全局变量的值:self.myVar
3. 返回条件判断的值:self.myVar > 1
4. 判断某个字段提取的值是否等于某个变量的值:self.outputParameters["字段名"] == self.myVar
以上表达式返回值大于0或为真则继续循环,否则停止循环。

最长等待脚本执行时间(0代表无限等待):

最多执行循环次数(0代表无限循环直到找不到元素或检测不到页面元素内容变化为止):检测页面以下元素内容不变化时退出循环(次数为0时生效,如果是多层嵌套iframe,建议写一个只有要提取的iframe页面内才有的元素的XPath,如/html/body/div[@class='LeftSide_menu']):

(自定义操作)使用代码/脚本定义循环退出条件(也可以在流程中添加 自定义操作 ,然后选择 退出循环 选项):

不设置脚本(选择这个下面写了脚本也不会执行)JavaScript脚本返回值(需以return 开头)操作系统级别命令 最长等待脚本执行时间(0代表无限等待):

跳过前几次循环(如要跳过前2个循环则填写2): 历史记录回退后 等待秒数:执行完是否向下滚动:不滚动向下滚动一屏滚动到底部一直滚动直到页面内容无变化(需设置好滚动后的等待时间用于检测页面变化)滚动次数(滚动类型设置为 不滚动一直滚动 时请忽略此项):滚动后等待时间(秒):

判断条件是从左往右判断的,即如果最左边的条件分支的判断条件满足,则执行最左边分支内的操作,否则判断从左向右第二个分支的条件是否满足,以此类推。设计任务时点击分支即可在浏览器中 动态调试 分支是否满足(不适用于系统命令和Python Eval操作)。

判断条件是从左往右判断的,即如果最左边的条件分支的判断条件满足,则执行最左边分支内的操作,否则判断从左向右第二个分支的条件是否满足,以此类推。设计任务时点击分支即可在浏览器中 动态调试 分支是否满足(不适用于系统命令和Python Eval操作)。

在iframe内操作

条件类型:无条件当前页面包括文本当前页面包括元素当前循环项包括文本当前循环项包括元素JavaScript命令返回值(需以return 开头)系统命令返回值针对当前循环项的JavaScript命令返回值(需以return 开头)执行环境下的Python表达式值(eval操作) 包含的文字/元素XPATH: ☺

代码/脚本内容(用Field["字段名"]来输入某字段/自定义操作的最新提取/返回值):

请先阅读此说明,再在上方输入框(不是本框)写具体代码,如果要执行大量代码,可以直接写outside:myCode.py,这样程序就会读取并执行EasySpider目录下的myCode.py中的代码。
根据Python代码的表达式值来判断条件是否满足,示例:
1. 返回当前浏览器对象的相关值,用self.browser表示当前操作的浏览器,可直接用selenium的API进行操作,如self.browser.find_element(By.CSS_SELECTOR, "body").text=="123",表示判断当前页面是否为123这个文本。
2. 返回自定义全局变量的值:self.myVar,如果
3. 返回条件判断的值:self.myVar == 1
4. 判断某个字段提取的值是否等于某个变量的值:self.outputParameters["字段名"] == self.myVar
以上表达式返回值大于0或为则执行此分支内操作,否则不执行。

最长等待脚本执行时间(0代表无限等待):

代码/脚本内容(点击此处查看更多示例): 最长等待脚本执行时间(0代表无限等待):

操作 执行前 等待以下元素出现:要等待的元素在页面第几个iframe中,0表示元素不在iframe中:元素出现的最长等待时间(秒): 操作 执行后 等待秒数(所有等待时间均可设置为小数,如0.5):等待类型固定等待(设置等10秒就等10秒)随机等待(设置等10秒会随机等10×0.5 - 10 × 1.5 秒)

保存任务(可按Ctrl+S调出此窗口)

×

任务名称:任务描述:导出数据格式(Excel/CSV/TXT/数据库,查看MySQL操作教程):CSV(采集长文章推荐使用此格式)XLSX(即EXCEL文件,建议单个单元格长度超过500时使用CSV格式存储)TXTJSONMySQL数据库(大量数据推荐使用)导出文件名/数据库表格名称(可使用../表示相对路径以改变文件保存位置,名称中的“current_time”会被替换为执行任务时的时间戳):数据写入模式(上方导出文件名/数据库表格名称需固定,同一个任务ID多次执行时生效):追加写入(如果文件已存在则在原文件后面追加)覆盖写入(如果文件已存在则覆盖原文件)重命名写入(如果文件已存在则重命名文件)执行完成后是否去除重复数据(注意此功能需要等到任务结束时执行,因此执行任务中途退出将无法进行去重):否是(注意上方文件名应该为固定名称而不是current_time,同时每次执行任务时的执行ID要为同一个)执行时通过读取以下Excel(.xlsx)文件来修改各个操作的输入参数,文件格式请在调用任务时点击“从Excel文件读取输入参数”按钮查看:浏览器模拟类型:电脑端手机端是否最大化浏览器窗口:否是每采集多少条数据保存一次(值越大采集速度越快,但如果意外退出则有数据丢失风险):是否要意外退出并重新执行任务时从上次保存的位置继续执行(已采集条数记录间隔为上面设置的值):否是(需要运行同一个任务ID和固定的文件名,请用命令行执行并指定ID)任务执行完毕后自动关闭浏览器等待秒数(用户信息临时目录将在浏览器关闭后自动删除):控制台预览时数据最大显示长度:任务执行时是否记录日志:是否任务暂停/继续快捷键:

另存为保存