【Python插件开发】记JsonPath搬运,小白可以看看。

瞌睡蟲子 2019-1-28 5733

其实这个是我个人的毛病,接触新语言第一反应是找熟悉的插件,有现成的插件,这样子工作效率事半功倍。那UiBot本身的能力说实话很少,借助python丰富的开源插件库,就基本没啥搞不定的了(PS:你就当python加个壳吧)。看着UiBot的数据采集都是依赖于浏览器引擎,浏览器采集有冗余加载、渲染、单线程等时间开销,这就限制了数据采集过程是非常缓慢的。因此想整个垂直爬虫的插件不依赖浏览器。就先随便拿个模块先试试水。

jsonPath就是这么一个工具,个人工作性质对cssSelector,jsonpath,xpath,正则,处理非常多。这些工具用好大大减少工作量。

看了官网python教程,依葫芦画瓢整理一下。实际过程就是:

1、把python依赖模块放到UiBot\lib\site-packages,熟悉python的都知道,这其实就是python的运行库目录。

2、把调用方法自己简单封装一下,暴露给UiBot调用(PS:甚至不用封装,py里面from …… import的方法直接可以用)


我就把我的集成步骤说一下:

1、python的JsonPath地址:

https://github.com/kennknowles/python-jsonpath-rw

当然你的先安装python3环境,这个自行百度。然后安装jsonpath模块:

pip install jsonpath-rw

安装完成后开始搬运,找到你python环境模块的目录(PS:一般是python根目录\lib\site-packages下面,安装命令里面也可以看到),这里面找到jsonpath_rw文件

_【Python插件开发】记JsonPath搬运,小白可以看看。

比如我这里就放在,这里

_【Python插件开发】记JsonPath搬运,小白可以看看。

重中之重:依赖库,我就是仔细看jsonpath的依赖库,然后在UiBot上调试了半天,都是报参数个数错误。犯这种低级错误,郁闷死我了。看到没,依赖这三个库!

_【Python插件开发】记JsonPath搬运,小白可以看看。

依赖库同样在python根目录\lib\site-packages下面,拿出来一起丢到UiBotCreator\lib\site-packages下面。

_【Python插件开发】记JsonPath搬运,小白可以看看。

2、对外暴露接口,丢到UiBotCreator\extend\python下面。

from jsonpath_rw import parse
def exe(json, expression, action=None):
    if action != None:
        return [str(match.full_path) for match in parse(expression).find(json)]
    else:
        return [match.value for match in parse(expression).find(json)]
if __name__ == '__main__':
    json = {'foo': [{'baz': 1}, {'baz': 2}]}
    print(exe(json, 'foo[*].baz'))

(PS:插件模块是在第一次调用时编译pyc文件的,放在UiBotCreator\extend\python\__pycache__下面,同时生产对应的info文件。这里不知道是不是没有处理,反正我每次修改后,要手动删除pyc文件,否则修改不会自动编译。另外一个好玩的事情就是上面说的,会自动暴露from …… import导入模块的方法,不信你可以看info文件)

这里还有一个技巧,没有info文件生成,模块就写的有问题。

_【Python插件开发】记JsonPath搬运,小白可以看看。

这里parse就是对外暴露的引进来的模块方法。

_【Python插件开发】记JsonPath搬运,小白可以看看。

3、最后是编码,因为习惯这里文件我默认都会注意UTF-8编码,所以忽略,小白一定得注意。Window、Unix的UTF-8无BOM格式都行。

_【Python插件开发】记JsonPath搬运,小白可以看看。


前后因为这个依赖库搞了半小时,总结起来:

注意依赖,注意编码,就行了。

后面想把pyspider搬过来,也搞搞垂直爬虫。

附件为JsonPath插件,直接解压到UiBot根目录即可使用。


上传的附件:
最新回复 (9)
  • Chu 2019-1-28
    2
    赞,有技术含量!
  • 游客 2019-1-29
    3
  • luo 2019-1-29
    4
    不错
  • 哒哒 2019-3-6
    5
    1024
  • 左眼工作室 2020-2-27
    6
  • luo 2020-2-29
    7
    说py加个壳这就不对了
  • 987工作室 2020-3-18
    8
    大佬可以开发一个调用   吾来机器人的插件吗,可以分享一下吗?感谢了  我的qq是  1586694944

    谢谢大佬
  • lu-001 2021-7-19
    9
    谢谢大佬,抱大腿^_^
  • 噗噗星 2021-7-20
    10
    6666,正在学习python
返回
发新帖