Phantomjs的正确打开方式

简介:

前段时间分析了Selenium+Phantomjs的使用方法以及性能优化问题,期间也分析了利用Selenium+phantomjs爬虫爬过的一些坑问题。然而在使用phantomjs的过程中,并没有正真提升phantomjs的性能,爬虫性能也没有很好的提升。经过网友的提醒,发现其实是使用phantomjs的方法出了问题,因此无论怎么优化,都不能从根本上去提升性能。那么本篇就来好好说说,Phantomjs正确的打开方式。

抛弃selenium+phantomjs

  之前我一直使用selenium去使用phantomjs,原因是因为selenium封装了phantomjs一部分功能,selenium又提供了python的接口模块,在python语言中可以很好地去使用selenium,间接地就可以使用phantomjs。然而,我现在要说的是,是时候抛弃selenium+phantomjs了,原因之一此封装的接口很久没有更新了(没人维护了),原因之二selenium只实现了一部分phantomjs功能,且很不完善。  
phantomjs APi

  通过查看phantomjs官方介绍,我们可以发现phantomjs的功能异常强大,绝不仅仅是selenium封装的功能那么简陋。phantomjs提供了很多种APi,具体可以查看:phantomjs api介绍,其中最常用的要属Phantomjs WebService与Phantomjs WebPage,前者用于开启http服务,后者用于发起http请求。
Phantomjs正确使用方式

正确打开方式应该使用phantomjs Webservice作为一种web服务的形式(api),将其与其他语言分离开来(比如python)。

设计流程

  Python通过http请求下发任务,Phantomjs Webservice获取任务后去处理,处理完以后再将结果返回给Python。任务调度、存储等复杂操作交给Python去做,Python可以写成异步并发去请求Phantomjs Webservice,需要注意的是目前一个Phantomjs Webservice只支持10个并发。但我们可以在一台服务器上多开几个phantomjs Webservice启用不同的端口即可,或者可以多台服务器做个集群,用nginx做反向代理。
Phantomjs Webservice

新建test.js,写入如下代码:

04bfe79160d01eb66b95aa9956e1885440f0d0ff

作用:处理http请求,获取url,进行截图或者获取源码操作。 
使用:

phantomjs.exe test.js

会在本地开启web服务,端口为8080。

Python Client

新建http_request.py,写入如下代码:

ff2ad0847c3337d9ccffdf7259714cde172adb20

作用:异步并发下发任务。

运行截图

运行python以后,异步下发10个任务,Phantomjs服务器端接收到url并开始处理,并发处理10个任务并输入结果。


原文发布时间为:2017-08-27

本文作者:nmask

本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号

相关文章
|
消息中间件 分布式计算 大数据
大数据面经 字节跳动 (整理)
大数据面经 字节跳动 (整理)
810 0
|
算法 计算机视觉 开发者
OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
885 0
|
5月前
|
运维 监控 安全
阿里云服务器搭建新手手册:环境搭建、安全加固,到日常监控、故障处理指南
日常管理阿里云服务器时发现,多数用户在服务器上线后,常因缺乏系统的运维知识,陷入“环境配置混乱”“故障排查无思路”“安全防护缺失”等困境。阿里云服务器的稳定运行,并非仅依赖购买时的配置选型,更在于后期规范的运维管理——从基础环境搭建、安全加固,到日常监控、故障处理,每一个环节都直接影响业务连续性。本文结合2026年阿里云服务器最新特性、实测运维经验及行业最佳实践,从环境部署、安全防护、日常监控、故障排查、性能优化五个核心维度,用通俗技术语言拆解运维全流程。全程无营销表述,通过表格梳理关键操作与问题解决方案,提供可直接落地的实操技巧,帮助运维人员及服务器使用者建立系统的运维思维,保障服务器长期稳
563 4
|
5月前
|
NoSQL 关系型数据库 分布式数据库
2026年阿里云数据库产品活动解析:云数据库 RDS、云原生数据库 PolarDB等数据库特惠
阿里云数据库活动为新用户提供全方位优惠,覆盖关系型、NoSQL及数据仓库产品。RDS新用户享指定规格3折/年或全系6折/年,如MySQL基础版100GB存储首年2232元起;PolarDB新用户全系规格6折/年,分布式版低至2.8折;Redis开源版2GB倚天版399元/年起,MongoDB指定规格1999元/年起;AnalyticDB MySQL版首月6折。活动涵盖从基础到企业级需求,助力企业以高性价比构建数据平台,降低上云门槛。
|
5月前
|
存储 缓存 安全
阿里云服务器计算型、通用型、内存型实例选购指南:如何选择最适合您的云服务器实例规格
在阿里云的实例规格中,属于计算型实例规格的热门实例主要有计算型c9i、计算型c9a、计算型c8y、计算型c8i等实例规格,属于通用型实例规格的云服务器有通用型g9i、通用型g9a、通用型g8y、通用型g8i,属于内存型实例规格的云服务器有内存型r9i、内存型r9a、内存型r8y、内存型r8i等实例。不同实例规格的云服务器在架构、计算、存储、网络、安全等方面有着不同,因此,其适用场景也有所不同。本文为大家解析计算型、通用型、内存型实例的区别,并为您提供选择参考。
|
存储 JavaScript 开发者
探索鸿蒙新世界:ArkUI框架实战指南,解锁HarmonyOS应用UI设计的无限可能!
【10月更文挑战第19天】ArkUI框架是华为鸿蒙系统中用于开发用户界面的核心工具,支持ArkTS和eTS两种开发语言。本文介绍了ArkUI的基本概念、组件使用、布局管理和状态管理,通过示例代码帮助开发者轻松构建美观、高效的跨设备UI。
1364 3
|
10月前
|
人工智能 机器人 测试技术
从支撑英伟达GR00T到登陆魔搭社区,智元AgiBot World打通具身智能全球数据生态
备受关注的 AgiBot World 百万真机数据集正式登陆国内顶级 AI开源社区——魔搭社区。该数据集由智元机器人开发,此前已在GitHub 和 Hugging Face 等国际平台开源并获得了业界的积极反响。此举是智元机器人布局国内AI生态的重要一步,国内开发者和研究者将能够更加顺畅地接入AgiBot World全套资源,降低数据获取和工具使用门槛,推动具身智能及机器人技术在国内的普及与发展。
374 0
|
JavaScript 安全 前端开发
【Vue面试题二十九】、Vue项目中你是如何解决跨域的呢?
这篇文章介绍了Vue项目中解决跨域问题的方法,包括使用CORS设置HTTP头、通过Proxy代理服务器进行请求转发,以及在vue.config.js中配置代理对象的策略。
【Vue面试题二十九】、Vue项目中你是如何解决跨域的呢?
|
人工智能 前端开发 UED
AI代码生成器——MutableAI
【2月更文挑战第17天】AI代码生成器——MutableAI
752 7
AI代码生成器——MutableAI
|
搜索推荐 语音技术 UED
网页可访问性设计的重要性、无障碍阅读的原则以及实现网页无障碍的具体方法
【6月更文挑战第14天】在数字化时代,网页可访问性设计至关重要,旨在确保所有用户,包括残障群体,能平等使用互联网。良好的可访问性符合法律法规要求,提升社会责任感,优化用户体验。无障碍阅读原则包括文本可读性、图像可感知性、音频视频可访问性和交互性设计。实现无障碍的方法有遵循WCAG标准、使用语义化HTML、支持辅助技术、进行无障碍测试及提供帮助。这不仅是技术挑战,更是设计者的社会责任。
495 0