PhantomJS其他语言调用

PhantomJS其他语言调用

我本身是使用Java语言的,所以会考虑phantomjs如何与java交互。目前考虑方案有如下两种:

1. Java Process

抓取逻辑还是用Javascript,封装成JS脚本,用Java Process去调用和管理每个Phantomjs的进程,但是多开进程,估计对机器性能要求比较高。而且Java只能通过phantomjs的标准输出,来判断脚本执行情况。

2.Phantomjs Webdriver

webdriver会开启一个http服务,其他语言可以通过这种http的方式,以WebDriver Wire Protocol协议(貌似是selenium规定的远程交互协议?)与phantomjs交互,这种方式是目前phantomjs自带的

webdriver源自于开源项目ghost driver,并合并到phantomjs。对于java语言,ghostdriver还封装了phantomjs的java库phantomjsdriver,这个库基于selenium的接口与协议。使用过selenium java api的朋友应该能直接用。

应该说,selenium的headless方案就是phantomjs + phantomjsdriver了吧。

看了下phantomjsdriver的api,封装了常用的几个功能,比如click,getTitle,findElement等。没封装的可以用执行js命令的api方式来调用。

性能上,主要看webdriver内部到底是怎么实现的。webdriver使用javascript语言写的(哇靠javascript各种全栈啊),肯定不是每个session一个进程了。如果一台webdriver撑不住,貌似可以用Selenium Grid hub来做中转,链接多台webdriver。

关于如何使用,直接看test模块

结论

很明显拉,webdriver比较适合做成服务,或者批量跑一些东西。当然可控性话,充分利用phantomjs的功能,还是直接用js脚本执行。

时间: 2025-01-22 14:35:58

PhantomJS其他语言调用的相关文章

c-C语言调用函数实现矩阵自乘

问题描述 C语言调用函数实现矩阵自乘 各位前辈,小弟新学C语言,怎么也调试不过,不知道哪里出了问题,请问我该怎么调试? 调用void SelfMul(int A1[][3],int A2[][3],int n)实现3阶矩阵的乘法 #include //void SelfMul(int A1[][maxSize],int A2[][maxSize],int n) void SelfMul(int A1[][3],int A2[][3],int n) { int s=0; for(int i=0;i

c语言-C语言调用声音,请大神指导

问题描述 C语言调用声音,请大神指导 比如说我输入:中华人民共和国,然后要求计算机用声音把它念出来,应该怎么做呢? 解决方案 google TTS C++ google Microsoft Speech SDK 解决方案二: Text To Speech,微软开发的文本到语音库. 解决方案三: 自己google下用法.

Go语言调用其它程序并获得程序输出的方法_Golang

本文实例讲述了Go语言调用其它程序并获得程序输出的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "exec" // "os/exec" in go1     "fmt" ) func main(){     cmd := exec.Command("ls", "-l")     buf, err := cmd.Output()   

c++-Visula Basic 6.0语言调用C++ struct结构体中的字符串问题

问题描述 Visula Basic 6.0语言调用C++ struct结构体中的字符串问题 VB6调用C++ DLL结构体struct中的字符串,内存预分配的写法是什么,内存回收怎么做?VB不能用指针的谢谢 解决方案 VB不支持指针,一般你可以定义成局部变量,这样函数退出会自动回收的. 解决方案二: c++公用体union.结构体struct内存分配问题

在asp中应用vb语言调用Graphics 类

问题描述 在asp中应用vb语言调用Graphics 类 小弟初学asp,在asp中应用vb语言调用Graphics 类,怎么定义具体实现的功能与Graphics g = this.CreateGraphics(); 功能与这句相同 解决方案 asp没有内置绘图软件,也无法直接调用vb.net的,找persits.jpeg这个组件 http://www.greenxf.com/soft/40232.html http://www.cnblogs.com/ly312/archive/2010/10

r语言-在C# 程序里 调用R语言 调用完R语言后C#程序也跟着结束了,怎么让他不跟着结束呢?

问题描述 在C# 程序里 调用R语言 调用完R语言后C#程序也跟着结束了,怎么让他不跟着结束呢? 我程序里调用R语言的代码是这样的 REngine.SetEnvironmentVariables(); REngine engine = REngine.GetInstance(); engine.Evaluate(R_cmd); engine.Evaluate("q()"); engine.Dispose(); 这样有什么问题吗? 解决方案 你C#怎么写的?控制台程序可以加上一个Cons

api c-怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件

问题描述 怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件 怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件

curl-C语言调用Curl为什么总是缺少依赖

问题描述 C语言调用Curl为什么总是缺少依赖 将依赖一个个添加进入还是会保存.网上下载的dll也不行..源代码应该不会出错.!-Windows下运行.求大神提供Demo.大神可以推荐其他的C http库么? 解决方案 http://www.oschina.net/p/libghttp 在网上查找一下,还是有很多相关的资源的. 解决方案二: http://blog.csdn.net/wishfly/article/details/7004292这样的问题你可以自己百度的你在这里问了就算有人回答了

有关VB6.0语言调用DLL接口的问题

问题描述 有关VB6.0语言调用DLL接口的问题 VB语言定义的Type是不是就是C++的结构体,如何获取Type中的内存分配指针呢? 解决方案 http://blog.csdn.net/sjrhero/article/details/6732068 解决方案二: VB6.0调用WEBService问题VB6.0调用WEBService问题