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中文社区”微信公众号

相关文章
|
4月前
|
Web App开发 数据采集 开发者
如何解决ChromeDriver 126找不到chromedriver.exe问题
当使用Selenium与ChromeDriver 126时,遇到`chromedriver.exe`找不到的错误,可能是因为版本不匹配、文件路径错误或系统设置不当。解决方法包括:匹配Chrome浏览器版本下载ChromeDriver,确保文件在正确路径且有执行权限,以及调整系统设置允许执行。示例代码展示了如何设置代理IP、user-agent和cookie来运行Selenium爬虫。通过这些步骤,可以确保爬虫程序顺利运行。
266 2
如何解决ChromeDriver 126找不到chromedriver.exe问题
|
6月前
|
Web App开发 Linux 开发者
实用的Chrome浏览器命令
实用的Chrome浏览器命令
|
6月前
|
Web App开发 Linux Windows
实用的chrome浏览器命令
实用的chrome浏览器命令
62 0
|
Web App开发 开发者
Chrome浏览器导出插件crx
Chrome浏览器导出插件crx
360 0
23-selenium-AutoIt文件上传
23-selenium-AutoIt文件上传
|
Web App开发
谷歌浏览器chrome调用cmd命令或exe命令
谷歌浏览器chrome调用cmd命令或exe命令
1872 0
快捷键让SublimeText在编文件快速在浏览器打开
这里插入一下安装"view in browser"官方版的说明:(前提是得先安装package control插件)
97 0
|
Web App开发 JavaScript API
js: 在chrome中实现复制到剪贴板
js: 在chrome中实现复制到剪贴板
503 0
|
Web App开发
Win系统 - 如何手动安装 Chrome CRX 插件?
Win系统 - 如何手动安装 Chrome CRX 插件?
122 0
Win系统 - 如何手动安装 Chrome CRX 插件?
|
Web App开发 Python
Chrome 技术篇-chrome浏览本地文件目录方法,浏览器查看文件目录。
Chrome 技术篇-chrome浏览本地文件目录方法,浏览器查看文件目录。
1044 0
Chrome 技术篇-chrome浏览本地文件目录方法,浏览器查看文件目录。