博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PhantomJS其他语言调用
阅读量:6955 次
发布时间:2019-06-27

本文共 857 字,大约阅读时间需要 2 分钟。

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源自于开源项目,并合并到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。

关于如何使用,直接看吧

结论

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

转载地址:http://sfnil.baihongyu.com/

你可能感兴趣的文章
第三章 CLR如何解析引用类型
查看>>
转:Redis监控工具—Redis-stat、RedisLive
查看>>
[LintCode] 通配符查询
查看>>
Excel,2010,可以独立打开窗口
查看>>
BZOJ3238:[AHOI2013]差异——题解
查看>>
DOIS 2019 DevOps国际峰会北京站来袭~
查看>>
数据库_SQL语句
查看>>
LRU算法的精简实现(基于Java)
查看>>
Web.xml配置详解之context-param
查看>>
Android二维码生成与解析技术,ZXing用法和封装
查看>>
qq强制聊天工具
查看>>
webConfig配置错误页
查看>>
matlab学习笔记
查看>>
《程序员代码面试指南》第五章 字符串问题 回文最少分割数
查看>>
Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备
查看>>
在微软5年,我学到的几个小技能
查看>>
静态类 和 静态构造方法
查看>>
Java实现八大排序之冒泡排序
查看>>
Java正则表达式
查看>>
用js互相调用iframe页面内的js函数
查看>>