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脚本执行。
PhantomJS其他语言调用相关推荐
- 使用thrift进行跨语言调用(php c# java)
1:前言 实际上本文说的是跨进程的异构语言调用,举个简单的例子就是利用PHP写的代码去调C#或是java写的服务端.其实除了本文提供的办法还有其他办法,例如http+xml(json)等等都能做到. ...
- Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本
Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本 首先参考http://wiki.chumby.com/index.php?title=Lua&print ...
- C++ 编写DLL文件给易语言调用
摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: 1 #ifndef _DLL_D ...
- JNI基础 c语言调用java方法
利用c语言调用java无参的方法 java方法 com.example.jniparsedata.ParseData类中的方法 //打印 public void sayHelloFro ...
- Java如何跨语言调用Python/R训练的模型
在 如何使用sklearn进行在线实时预测(构建真实世界中可用的模型) 这篇文章中,我们使用 sklearn + flask 构建了一个实时预测的模型应用.无论是 sklearn 还是 flask,都 ...
- php 易语言md5加密解密,详解易语言调用js实现md5加密方法
易语言调用js需要用到拓展组件的脚本组件, 在窗口创建完毕的事件里给脚本组件初始化设置下脚本组件的语言属性,在这里以JScript为例: 脚本组件执行脚本的简单方法是: 脚本组件1.执行 () 然 ...
- Linux C语言调用C++动态链接库
Linux C语言调用C++动态链接库 标签: C调用C++库 2014-03-10 22:56 3744人阅读 评论(0) 收藏 举报 分类: [Linux应用开发](48) 版权声明:本文为博主原 ...
- 跨语言调用Hangfire定时作业服务
背景 Hangfire允许您以非常简单但可靠的方式执行后台定时任务的工作.内置对任务的可视化操作.非常方便. 但令人遗憾的是普遍都是业务代码和hagnfire服务本身聚合在一个程序中运行,极大的限制了 ...
- c语言中调试时go的作用,C语言调用GO
C语言调用GO 最近工作中遇到需要在c语言里面调用go语言的需求,总结了一下,下面代码里面的每一个注释都很有用,闲话不多说,直接上代码~ 示例 GO代码: package main // 这个文件一定 ...
- mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf
C语言调用mysql快速教程(精华篇).pdf ,使用 语言操作 之前,先在 里头创建一个数据库,一个表,在表里头添加 1 c mysql mysql 数据如下: 创建数据库,库名为 cusemysq ...
最新文章
- css 选择器(标签选择器、类选择器、层级选择器、id选择器、组选择器、伪类选择器、通配符选择器)
- python财务报表分析-用Python爬取东方财富网上市公司财务报表
- 51单片机多任务操作系统的原理与实现
- linux下使用update-alternatives切换java版本的正确姿势
- 征战蓝桥 —— 2015年第六届 —— C/C++A组第4题——格子中输出
- 自定义 ocelot 中间件输出自定义错误信息
- java飞鸽传书_feige 飞鸽传书源代码java 实现不错的联系网络编程的资料飞鸽传书的GUI(java实现) - 下载 - 搜珍网...
- [html] 切页面时,每次都动手刷新看效果很麻烦,如果要让你写一个实时刷新预览的工具你该怎么写?
- Linux 内核通知链和例程代码
- 【js】数组置空的其他方式及使用场景
- dubbo配置文件xml校验报错
- Spring4.x(16)--SpringEL-正则表达式
- 常问的数据结构与算法
- php模板多图上传插件,PHP百度diyUpload多图上传插件实例
- 资深研发转变为架构师意味着什么
- Referenced file contains errors解决
- bootloader 详细介绍
- kali linux 通过粘贴板攻击对方服务器
- STC12C5A56S2和DS12C887做的电子闹铃
- 1404 数根(函数专题)
热门文章
- 在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败
- Appium+python自动化(十一)- 元素定位秘籍助你打通任督二脉 - 下卷(超详解)...
- javaee--学生成绩录入与显示--Struts2标签的使用
- day23 python学习 类 人狗大战
- gulp教程、gulp-less安装
- Java开发笔记(一百三十)Swing的选择框
- 2019.02.12 bzoj3944: Sum(杜教筛)
- git解决 remote: Permission to wuheng1991/site-manager.git denied to XXX
- 玩转Spring Boot 集成Dubbo
- js手机号批量滚动抽奖代码实现