logo_tu 发表于 2018-2-27 17:51

Java程序调用Python脚本

Java程序调用Python脚本大致步骤请看图片一。
前几天弄个微信公众号玩玩,做了个输入关键字,能根据关键字返回音乐地址的公众号。
从论坛中找到相关音乐的接口,然后用python做了一个爬虫,根据关键词,爬到相关音乐
的唯一标示,在根据接口+唯一标示爬去到音乐地址,当然,用java程序也能做爬虫,但是
太麻烦啦,所以选用python
至于python是如何爬的,这里就不说了。
python
脚本地址
百度云:
https://pan.baidu.com/s/1kWPrTVD

...由于突然发现那个音乐接口不能用了,所以就弄了个简单爬爱奇艺电影的爬虫,原理差不多。
{:301_971:}python写的不太优雅,见谅
我用的是python2.75,(觉得这个版本很容易乱码比python3)
重要看a.self_main(sys.argv),sys.argv表示的获取屏幕的值,在图片二中,表示的就是   成龙
警告信息就当它不存在。
总结一下,用一个关键字,获取到一堆关于这个关键字的信息的json字符串。
对于那个音乐接口失效的问题,这个时候都体现出python脚本的优越性啦,接口失效,你就修改python脚本,不管怎么修改,只要最后python返回的json格式和你的java实体类属性
对应都可以了。(我比较懒,我的就把)
接下来就是java程序了。
package com.shiro.pojo;

public class MovieJson {
        private String title;
        private String img;
        private String url;

        public String getTitle() {
                return title;
        }

        public void setTitle(String title) {
                this.title = title;
        }

        public String getImg() {
                return img;
        }

        public void setImg(String img) {
                this.img = img;
        }

        public String getUrl() {
                return url;
        }

        public void setUrl(String url) {
                this.url = url;
        }

        @Override
        public String toString() {
                return "MovieJson ";
        }

}



        public static List<MovieJson> execFIile1(String word, String filePath) {
                String[] arguments;
                //arguments = new String[] { "python", FILE_PATH, word }数据里面的三个参数,对比图片二,第一个是 python ,第二个是 aiqiyi.py(就是文件路径),第三个是 成龙

                if (filePath == null) {
                        arguments = new String[] { "python", FILE_PATH, word };
                } else {
                        arguments = new String[] { "python", filePath, word };
                }
                try {
                        //核心
                        Runtime runtime = Runtime.getRuntime();
                        runtime.exec(arguments);
                        Process process = Runtime.getRuntime().exec(arguments);
                        BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
                        StringBuilder sb = new StringBuilder();
                        String line = null;
                        while ((line = in.readLine()) != null) {
                                sb.append(line);
                        }
                        Gson g = new Gson();
                        in.close();
                        if (sb.length() < 5) {
                                return null;
                        }
                        int re = process.waitFor();
                        List<MovieJson> fromJson = g.fromJson(sb.toString(), new TypeToken<List<MovieJson>>() {
                        }.getType());
                        return fromJson;
                } catch (Exception e) {
                        e.printStackTrace();

                }
                return null;
        }
大致就是利用java程序调用命令窗口,在命令窗口输入指令,然后读取打印的指令,即json字符串,在用
Gson包,把json字符串赋值给实体类。
提一下,把这个电影的地址前面加上电影解析的接口,不就是在线电影了。然后放到用java写的微信公众号里面 。不过我的python脚本写的比较简单,
不知道大家能看懂吗???????不懂可以私聊或者直接回复,不过这几天忙,看到经量回复
ps:大家上班没,有没有招javaee的,工作经验就几个月,对于工资没要求,没要求{:301_999:}。最好是武汉,然后是郑州,找工作好难啊,可以私聊
谢谢

k8112919 发表于 2018-2-27 18:43

加油学习就是胜利

cndgyg 发表于 2018-2-27 19:26

骑狗的猴子 发表于 2018-2-27 22:10

我也在找Java开发

logo_tu 发表于 2018-2-28 07:33

骑狗的猴子 发表于 2018-2-27 22:10
我也在找Java开发

哈哈,你是哪里的?相互学习下
页: [1]
查看完整版本: Java程序调用Python脚本