1、安裝Eclipse
先安裝jdk,再安裝Eclipse,成功后開始建立py_java項目,在這個項目的存儲目錄SRC下建立test包,在test包中New-Class,新建MyDemo類,建好完成后就可以在MyDemo中寫代碼了
2、python腳本內容
import numpy as np from selenium import webdriver def main(): url = 'https://www.tianyancha.com/login' driver = webdriver.Chrome() driver.get(url) if __name__ == '__main__': a = np.ones(3) print(a) print('java 調用有第三方庫的python腳本成功') main()
調用了兩個三方庫,有輸出操作和打開瀏覽器操作
3、MyDemo類的代碼(java調用python腳本)
package test; import java.io.BufferedReader; import java.io.InputStreamReader; public class MyDemo { public static void main(String[] args) { try { System.out.println("start"); String[] args1=new String[]{"python","D:\\pyworkpeace\\9_30_1.py"}; Process pr=Runtime.getRuntime().exec(args1); BufferedReader in = new BufferedReader(new InputStreamReader( pr.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); pr.waitFor(); System.out.println("end"); } catch (Exception e) { e.printStackTrace(); }} public void test(){ System.out.println("我的第一個方法C"); } }
4、運行結果如下所示
不光有打印窗口,而且還彈出了天眼查的瀏覽器,程序完成后瀏覽器也就關閉了
5、java動態傳遞參數
這次要做的是通過java傳遞url給python腳本,而python腳本用瀏覽器打開接收到的url網頁。
(1)首先定義一個url參數在java中 ;String url="http://blog.csdn.net/thorny_v/article/details/61417386";
(2)將參數傳遞給python; String[] args1 = new String[] { "python", "D:\\pyworkpeace\\9_30.py", url};
java中其他地方完全一樣 沒有改動
(3)python中需要做一點小變動,重寫了一下代碼
import sys from selenium import webdriver def main(a): driver = webdriver.Chrome() # 打開瀏覽器 driver.get(a) # 瀏覽器打開指定頁面 if __name__ == '__main__': for i in range(1, len(sys.argv)): url = sys.argv[i] main(url)
其中需要注意的是接收參數從sys.argv[1]開始,sys.argv[0]是python腳本的參數地址,沒什么用。最后就大功告成了
//這個程序可以調用python腳本,並向python腳本中傳遞參數 package test; import java.io.BufferedReader; import java.io.InputStreamReader; public class test_1 { public static void main(String[] args) { try { //String a=getPara("car").substring(1),b="D34567",c="LJeff34",d="iqngfao"; //String[] args1=new String[]{ "python", "D:\\pyworkpeace\\9_30_1.py", a, b, c, d }; //Process pr=Runtime.getRuntime().exec(args1); String url="http://blog.csdn.net/thorny_v/article/details/61417386"; System.out.println("start;"+url); String[] args1 = new String[] { "python", "D:\\pyworkpeace\\9_30.py", url}; Process pr=Runtime.getRuntime().exec(args1); BufferedReader in = new BufferedReader(new InputStreamReader( pr.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); pr.waitFor(); System.out.println("end"); } catch (Exception e) { e.printStackTrace(); } } private static String getPara(String string) { // TODO Auto-generated method stub return null; } }