天天看點

PhantomJS其他語言調用

我本身是使用java語言的,是以會考慮phantomjs如何與java互動。目前考慮方案有如下兩種:

抓取邏輯還是用javascript,封裝成js腳本,用java process去調用和管理每個phantomjs的程序,但是多開程序,估計對機器性能要求比較高。而且java隻能通過phantomjs的标準輸出,來判斷腳本執行情況。

webdriver會開啟一個http服務,其他語言可以通過這種http的方式,以webdriver wire protocol協定(貌似是selenium規定的遠端互動協定?)與phantomjs互動,這種方式是目前phantomjs自帶的

應該說,selenium的headless方案就是phantomjs + phantomjsdriver了吧。

看了下phantomjsdriver的api,封裝了常用的幾個功能,比如click,gettitle,findelement等。沒封裝的可以用執行js指令的api方式來調用。

性能上,主要看webdriver内部到底是怎麼實作的。webdriver使用javascript語言寫的(哇靠javascript各種全棧啊),肯定不是每個session一個程序了。如果一台webdriver撐不住,貌似可以用selenium grid hub來做中轉,連結多台webdriver。

很明顯拉,webdriver比較适合做成服務,或者批量跑一些東西。當然可控性話,充分利用phantomjs的功能,還是直接用js腳本執行。