影刀使用体验浅析、影刀怎么样好不好用
最近用了一下RPA软件,挑了影刀,并且进行了一段时间的学习,简单总结一下优缺点:
个人的总体评价
①对初学者&实现简单功能&仅限个人使用操作来说,稍微学一下,比如个把月就能实现一些功能,学习成本比代码低多了;
②开发进阶复杂稳定功能&专门搞RPA工作,基本要用到编码版,实际上都是会代码的人,去降维打击影刀RPA里的这些东西,而不是零基础学学影刀的教程去开发复杂功能,影刀目前来说三块功能分别对应网页操作,桌面自动化,手机端操作自动化,付费里有调度、加密、图像识别、代理等功能,都能在Python中找到对应的库。如果你想从下到上,其实学完整套影刀RPA的教程,你的水平离会这些代码三方库的人还差得远,不过还是要看岗位要求,一分钱一分货嘛。
学习路径指引
影刀对使用者来说,语法主要是PYTHON,实际运行中是混合了其他语言比如C,又强行变形了一下的畸形种,乍一看都懂,但是得按照他们定的方式操作。
情况①:有代码基础的情况下学影刀:
你会代码,你认为应该这样操作,实际上在影刀里行不通,特别是可视化流程中,影刀绝对在某些地方给你稍微变了一下,虽然变得不多,但你不把教程都看了你又不知道他哪里变了,不过你可以猛猛倍速看,这课基本逃不了。
情况②:零基础如何学习:
还能咋地,老老实实把教程都学了,我也看了官方大部分课,官方课中关于Python、前端html、JavaScript、requests、pandas数据分析等东西,看了教程还不太懂的话,其实没太大必要深究,因为这玩意并不是几个小时几天就能学会的,基本都是按月学习,教程只是蜻蜓点水讲了一点点皮毛,这全套东西涉及的方面很多,你如果能把影刀常用操作都看明白,你学习过的东西起码要花一两年以上的时间,不过你可以以影刀为起点,看看是继续学习还是赶紧转行。
如果懂python,且正好懂爬虫|网页自动化selenium等、桌面自动化库、appnium的话,正好对上了影刀三大主要功能,学这个软件就像大学生攻读小学学位。但你懂一些语言,对这门软件搞复杂流程的时候,也有一些负面BUFF,因为你总会觉得应该这样做才是正常操作,但影刀许多方面为了照顾小白,把很多操作"变"了一下,导致有基础的你觉得自己的操作和逻辑是最正确的,但影刀可能并不是用的最对的,而是最适应小白最直观的,所以你可能搞不明白哪里出了问题,建议看看编码版怎么操作的,然后直奔编码版。
【顺带一提,影刀官方学院的课程和认证考试里,很多题目其实放了很多水,正常开发肯定要考虑更稳健更复杂的情况】
先说我认为的一些小缺陷:
1.编码版虚拟环境复杂化!,一个应用(就是影刀里一个完整的自动化项目)稍微复杂点的,基本都想用编码版,因为可视化版的不好复制到另一台电脑上(付费的另说),而编码版(即该项目以代码为主),维护复制相对简单一些。但你自己写的不同的应用,如果涉及到要用python第三方库或者影刀的拓展库(感觉基本也是继承了改个名),那么必须重新下载一次,就像为每个项目生成了一个新的虚拟环境一样!
简单比喻:比如说你的应用一号需要几个三方库A,B,C,那下载的A,B,C只能用于应用一号,而你的应用二号即便需要的三方库跟应用一号一毛一样,也要重新下,基本上复杂的程序,肯定要用三方库,所以你每换一个项目,都要重新安装,咱就是说RPA有必要每次生成新的环境么;

2.基本是无法运行本地.py文件,我看教程演示如何用影刀RPA运行本地.py文件,先把文件放在local文件夹中,同时会自动帮你上传到云端!!!,但影刀项目中还是要安装.py文件里的三方库,如果.py里有一二十个三方库,你就要在影刀这个项目中也要安装一二十个,那么这么做有什么意义???不过你可以曲线救国,用影刀RPA打开你的IDE,然后点击IDE中的运行,如果结果完成,返回一个signal或者什么的告诉影刀,方便进行下一步(不过为什么不直接用IDE的代码?);
3.自带的三方库情况依旧,影刀编码版中既可以安装正儿八经的Python三方库,也可以装影刀自己搞的三方库,感觉基本可以肯定是把python的一些常用库,继承一下改了个名,但有两个问题,一是绝大部分方法函数都叫process1,process1,process__n,按序号往下加,虽然对每个process都有说明注释,就问你知不知道procee12和process21哪个是实现哪个功能,在测人的脑力是吗?二是不同应用也需要重新下载影刀自己的拓展三方库,咱就是说,这继承改个名加了注释的东西,也还进行版本迭代更新吗;

要求必须要用其相似元素组来实现一个功能,影刀专门做了一个网站给学习者练手,数据表格table,一行是tr;核心就是循环tr_list,判断td,再操作嘛。但如果你跳过了新手教程,你绝对猜不到,定位某一行是否正常付款,官方本意是要让你用十字交叉定位,首先捕获一个tr行,再稍微手动改一下xpath定位到xpath(.//tr[""]),即获取tr_list,再循环每个tr,加付款状态td_list(根据index定位到的付款状态整个列),然后像取交集一样定位到具体的一个付款状态;像我这种快速看完新手教程的,而且间隔了一段时间再来考试的,根本不记得十字交叉定位这种操作,而且一般爬虫的操作,基本直接找tr里指定位置或者指定属性的td,你会想到十字交叉定位这种操作?幸亏机智如我,直接硬改xpath,不过后来越想越不对劲,这影刀教程基本是面向小白教学,怎么可能会用到手动改xpath、CSS定位这些操作,立马回去翻视频才知道“老师出的题目是要让你按照课本上讲的来作答”,这快速过一遍,不实操一下,也容易忘啊!后来想了一下,不会前端或者爬虫的,应对一些复杂网页,估计也容易出问题,但这些内容也不是一瞬间就能教会,这也不怪影刀和视频教学的。
5.一些设计跟正常开发存较大逻辑和实践区别,此处举个列子;
例如有个影刀认证的考试题目,简单来说就是打开淘宝,搜一个关键词,获取搜索结果页面result_page前十个的基本信息,再去详情页抓参数信息,再下载一个主图。相信这东西会代码的几分钟就能搞定,而影刀里,我自己想要尝试实现一个功能,即把搜索关键词的结果页信息,和对应的详情页信息进行拼接,先存到数据表格中,发现只用自带的数据表格怎么都搞不定;
比如抓了result_page的信息,写到影刀的数据表格,相当于一个内存dataframe;

那么我根据详情页的URL去detail_page抓点东西,讲道理对应起来,往同一行的H列往后加就行了,就这个对应起来的简单功能,完全无法实现;
比如这个数据用字典存肯定最好,很多商品规格里一两百个字,不同商品key数量不同;
{'产地': '中国大陆', '省份': '湖北省', '城市': '宜昌市', '水果种类': '黄桃', '包装方式': '食用农产品', '单果规格': '精选锦绣黄桃中大果(2-3个每斤)', '重量': '5斤'}
讲道理直接获取当前行,从H列往后搞不就行了吗?不信的可以直接去试试。
往数据表格中的用可视化流程,写入有三种方法,写入行、列、区域,我们目标是跟着搜索结果页的数据,在后面追加数据;
如果用写入行会写入H1:H10,相当于往下加了一列数据(这个功能为什么不叫写入一列?),而且写入必须用追加,不然只有最后一个数据;
如果用写入列,也只能用追加,第一行会正确,第二行会第一行的已使用列+1开始往后干,斜着向右下方写入,直接吐血;
如果用写入区域,结果更奇葩;
试过换成二维列表也是一样;
怎么办呢?①用编码版,不过你要知道编码版怎么读取对应资源,用什么方法,得多试试了解具体语法;②先读取数据表格内容,(影刀里面对很多数据一言不合就默认处理成二维列表,你不确定的东西绝对是二维列表,还挺省事...),循环每个一维列表,在屁股后面添加,最后再导出成excel之类的,想单纯在数据表格里添加甚是麻烦;③存成两个本地表再合并呗,那么此时又有一个问题,如果用类似数据库的表连接JOIN,要装三方库吧;④还是存两个Excel表,强行按照行顺序,用可视化流程的方式,把B表的一行接在A表H列之后,假如数据很多,某一行数据有问题,还要考虑空值、异常的处理。
这玩意其实写代码是很简单的事,但用可视化操作就变得很复杂。所以为什么说,要看教程,还会有负面BUFF
那么为什么不用第三方库呢,因为想要复用,如果是给不太懂的人用,不要搞太复杂,最好就用本地自带的,用第三方的话,我不如全程requests,selenium,drissionpage,pandas,要影刀作甚;
6.两套运行逻辑交叉,例如一道题目是要根据一个数据源,搞一个周报,简单来讲就是每个列sum一下,再把一些特别的找出来,大概就是上面的数据统计一下变成下面的;

当然如果稍微会一点的人,用Excel套模板做周报,都不可能把行列顺序写死,最起码得用点index,match什么的。
假如我硬是拒绝装三方库,非要用可视化来做,我想找D列交易金额列的index,循环第一行,会得到3,毕竟python从0开始,而用可视化选择3列,又变成C列,又变成EXCEL这套了,除非对这软件非常熟,不然你搞不明白你现在使用的功能,是用的python类型的数据,还可见即所得的影刀数据类型,同时网页定位元素,改定位条件,一个div下很多个li,到底是1开头还是0开头,就问你搞不搞的明白,说白了还是为了照顾小白,搞了两套东西在里面。What can i say!
7.变量过多可能带来的麻烦,影刀里面写稍微复杂一点点的功能,很可能会遇到变量过多导致混淆的情况:原因①是,在抓取一个元素的链接时,正常写代码,只会存一个变量保存href,而影刀里会将找这个web element的xpath或者CSS也存起来,而且必须起一个名字,十分建议将名字起得比较有辨识性,指不定你在编码版中要用到,所以很多操作会产生两个变量,当然这两种变量会在可视化流程中,用不同颜色、区域存放显示。那么你在用编码版中,你会遭遇中文写的捕获的元素,夹杂代码中的英文变量,让你甜的咸的豆腐脑一碗吃,如果你不愿意同吃,比较建议用xpath或者CSS定位网页;②调用流程,例如要把一个功能封装,就像def一个函数一下,假如这个函数返回了几个结果参数,调用这个函数、流程,必须要用个新变量接收结果,这是强制要求的,这样首先又多出了一个,衔接上没有写代码丝滑。③循环中的变量,一般循环大家都是for 或者i in 什么,中间的|i实际上不会太认真,毕竟只是一个局部变量,而影刀里可得认真区分开。自己用一下,就会感觉记忆和分清影刀里的变量的难度,比写代码难多了,所以在变量命名时,要一开始就十分小心,不然后面你看着一堆变量绝对懵圈,一开始用中文变量名我是拒绝的,最后发现还是要入乡随俗,落到影刀手上,变量名真得中文为主英文为辅。
8.吐槽一下影刀考试的题目,很多选择题出题语义模糊不清真假难辨,估计出题的人从大学开始就放弃了语文、文学的积累,虽然作为搞IT的不太需要注意,但也不至于这么离谱。
如下图所示:

这是影刀操作excel填充图片的一个题目,影刀的一个功能,可以一次给一个单元格填充图片,可以填充本地图,也可以根据一个链接,填充图片,那么以淘宝为例,你先抓了一波数据,A列为商品title,B列为主图的src,那么C列就可以根据B列的值搞一个图到对应的单元格中,你还可以手动调整下size还是P什么的改一下图的大小,数据不多的话,看起来有个图会感觉好点;这功能excel其实没有,是影刀根据链接去下载的图片,然后塞进了单元格里的,猜测是走了一个For循环之类的,并没有多线程或者异步下载;删除图片也可以一个个循环删,也可以一键删除这个sheet中所有的图片;
那么A肯定是错的,B是对的不需要去研究,重点是C和D,表格-->sheet,单元格--->cell,这个没问题吧,那么循环所有的cell导出所有的图片,就是可以把表格的所有图片都导出吧。
反正搞影刀考试。很多选择题,你就感觉你在做小学生的题目:“妈妈给了小明80元钱,让小明去买15块钱的鸡蛋回来,请问店员应该给小明找多少钱。A-65 B-35 C-5 D-1”。这种沙雕题你怎么回答都是错的,小明可能给的20元别找5元,可能给50元别人找35元,可能给了十元加三张两元的别人要找1元,如果怀孕一只猴,那么请问树上到底有几只猴?像这种沙雕题多得很。
9.影刀占用电脑,影刀在运行的时候电脑会被占用,此时基本不能动电脑了,如果比较介意这个,那么你需要去学另外一个RPA了,但是,本人也看过一些其他知名RPA,不充钱还想白嫖???,例如uibot里面是分开的,一个creater就在里面写自动化项目,可以通过worker运行多个项目(充值才能解锁),还可以后台commander调度多台电脑不同worker,搞得像分布式一样,当然影刀也有类似功能,都是(充值才能解锁),根据我知道的一些BI软件的尿性,基本都是你本地自己玩,想怎么玩就怎么玩,不会太多的限制,但凡你妄图分享给他人,或者含展示、共享、传递之类的功能时,就提醒你该充值了,我已经很习惯这个了。同时可知,你写过的项目肯定被加密了,妄图不充值本地文件找一找,复制一下传给别人白嫖的话,肯定是不行的,别人指纹加密之类的东西都明白地写在脸上了,还有必须联网登录账号云端认证,最多通过写编码版来减少传递工作量,想白嫖只能尝试学开源RPA,不过开源的学起来估计别人不带多少注释,不一定文档搞得让人轻易看懂,这是无法调和的,也是一条冷门路子啊。
当然也有一些优点:
1.如果你常用的浏览器存了很多网站登录账号密码,那么你可以用自带的cookies或者本地信息直接打开浏览器,省略了登录流程,很多大厂的登录信息超难超复杂,解决问题的最佳办法就是绕过问题!从爬数据来讲,反正大厂的东西根本不敢爬太快,RPA反倒还不错,去搞大厂的网站,就算是RPA,稍微动作快一点,一样给你拍死,大部分RPA默认都不太会"演戏",直接硬生生滑到底部,(当然真正要用用JS执行脚本,或者用键盘鼠标模拟向下滑动,反正不能频繁地一言不合滑到底),不然风控立马拼图滑块图片全家桶安排上;
2.一些桌面自动化的东西,比如Pywinauto,直接用影刀的傻瓜模式,省了去学这些库的时间;
3.编码版中,可选调用模块或者调用流程,调用流程传参非常麻烦垃圾玩意直接无视,但调用模块就好多了,直接把默认的main函数忽略,调模块要指定调哪个函数比如fun_a,可能我们还定义了另外几个函数,比如带参数的fun_b,fun_c,可以在fun_a中调用_b,_c,但是我们还是先把参数传给fun_a,再间接传给fun_b,实现一种曲线救国的套路;当然还可以挨个函数调用模块,不过既然这样了,那么直接全用编码板无视掉可视化流程算了呗。
4.影刀付费版,里面还有不少厉害的功能,比如帮你滑块、拼图,这就有点东西了,好像是接的第三方的,没充过W不太清楚,当然牛逼的功能要钱包充足,据说影刀企业版,价格起步四五万,不是固定的,可以谈,反正软件做出来了,再卖出去没什么成本,影刀基本是瞄准了电商这块,所以对搞电商的比较合适,如果工作内容是其他的,可以考虑学习其他RPA软件,个人感觉影刀这起步价有点高了;
5.影刀的教程全免费,并且凭心而论视频教程和PPT都做的还不错,像学其他的编程语言,基本上大家高深的重要的都会藏着掖着一部分,不交钱不教真本事,影刀毕竟面向企业客户,而会学习影刀RPA的基本是打工仔,所以从商业上就在培养会影刀的人群,自然会免费用心想教会你怎么使用,一般这种类型的推广软件都会做官方教程,个人认为影刀的PPT啊讲解啊视频制作什么的,用心程度算上乘的,不管咋样从结果上对学习人员是很利好的。
吐槽一波影刀考试:
影刀高级考试,你需要懂点SQL,还要懂点爬虫,如果只看教程里面那些估计搞不定,既然要用编码版,那我可就要打开本地IDE了,先本地把代码一写好测试,直接复制上去;

为了确保安全,我还提前睡了一觉保证精神良好,很多题目,我都提前用代码运行了一遍,数据库都自己本地建好试过;
还有陷阱题,搞得我本地全敲了一遍,都有点怀疑自己!

要不是因为多选题,这drop table 你说改变了表结构了吗?

这操作的第一题,我的解法有点纰漏,应该要抓img的alt属性


这第二题,要注意数据里有脏东西,有 "-"在里头,我不讲武德用pandas,直接groupby;想着既然已经装了pymysql,requests,再装一个pandas也不差这点了,正常操作应该能不装就不装,用字典循环一样可以搞定;

影刀RPA给我的感觉是:
有用,但似乎又没太大用,可视化做稍微不简单的东西,一是调试麻烦,二是很难复制(除非充值用发版),三是真正稳健的流程开发难度绝对不那么简单;
能做出复杂稳定的编码版流程并能维护的个人,好像不需要用影刀,估计只有大公司专门搞RPA岗位的人才会花时间精力做这事;
但对零基础的来说,跳过学习代码肝项目这个过程,做一些小应用,借助影刀(相当于有一个框架),能简单高效搞点小事,虽然根基不牢搞不了大活,但只要能用就行。

浙公网安备 33010602011771号