Java程序调用Python脚本大致步骤请看图片一。
前几天弄个微信公众号玩玩,做了个输入关键字,能根据关键字返回音乐地址的公众号。
从论坛中找到相关音乐的接口,然后用python做了一个爬虫,根据关键词,爬到相关音乐
的唯一标示,在根据接口+唯一标示爬去到音乐地址,当然,用java程序也能做爬虫,但是
太麻烦啦,所以选用python
至于python是如何爬的,这里就不说了。
python
脚本地址
百度云:
https://pan.baidu.com/s/1kWPrTVD
...由于突然发现那个音乐接口不能用了,所以就弄了个简单爬爱奇艺电影的爬虫,原理差不多。
python写的不太优雅,见谅
我用的是python2.75,(觉得这个版本很容易乱码比python3)
重要看a.self_main(sys.argv[1]),sys.argv[1]表示的获取屏幕的值,在图片二中,表示的就是 成龙
警告信息就当它不存在。
总结一下,用一个关键字,获取到一堆关于这个关键字的信息的json字符串。
对于那个音乐接口失效的问题,这个时候都体现出python脚本的优越性啦,接口失效,你就修改python脚本,不管怎么修改,只要最后python返回的json格式和你的java实体类属性
对应都可以了。(我比较懒,我的就把)
接下来就是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 [title=" + title + ", img=" + img + ", url=" + url + "]";
}
}
[Java] 纯文本查看 复制代码
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的,工作经验就几个月,对于工资没要求,没要求。最好是武汉,然后是郑州,找工作好难啊,可以私聊
谢谢
|