专栏首页Python中文社区Phantomjs的正确打开方式

Phantomjs的正确打开方式

專 欄

作者:nmask

博客地址

https://thief.one/

前段时间分析了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,写入如下代码:

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

phantomjs.exe test.js

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

Python Client

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

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

运行截图

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

本文分享自微信公众号 - Python中文社区(python-china),作者:nmask

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《王者荣耀》、《英雄联盟》官网皮肤图片爬取

    專 欄 ❈ 作者:麦艳涛,挖掘机小王子,数据分析爱好者。 原文链接:https://zhuanlan.zhihu.com/p/28617629 ❈ 本文简介:...

    Python中文社区
  • Python爬虫—破解JS加密的Cookie

    專 欄 ❈Jerry,Python中文社区专栏作者。 blog:https://my.oschina.net/jhao104/blog github:htt...

    Python中文社区
  • Django 博客教程:前言和环境安装(连载一)

    專 欄 ❈追梦人物,电子科技大学计算机学院研究生,从事大数据分析研究方向。主要使用 Python 语言进行相关数据的分析,熟练使用 django 开发网站系统。...

    Python中文社区
  • Phantomjs网页前端自动化测试之利器

    描述:Phantomjs /ˈfæntəm/js是一个基于webkit的JavaScript API实现网页前端自动化测试。它使用QtWebKit作为它核心浏览...

    WeiyiGeek
  • Java & PhantomJs 实现html输出图片

    Java & PhantomJs 实现html输出图片 借助phantomJs来实现将html网页输出为图片 I. 背景 如何在小程序里面生成一张图,分享到朋...

    一灰灰blog
  • 本机web开发环境的搭建--Apache篇

    和上一篇《本机web开发环境的搭建--nginx篇》一样,这篇也是小白级的文档(大神请忽略~)

    meteoric
  • 如何利用好碎片时间?这款小程序,让你随时随地涨知识

    知晓程序(微信号 zxcx0101)本期推荐的「背宝」小程序,让你随时随地都能学些什么,在不知不觉中提高成绩,增长学识。

    知晓君
  • 学界 | 强化学习+树搜索:一种新型程序合成方法

    作者:Riley Simmons-Edler、Anders Miltner、Sebastian Seung

    机器之心
  • HIVE内置函数

    云飞扬
  • 18.4.16日报

    http://39.108.120.249:843/client/index.html?userid1=7070525093267547207884693465...

    龙泉寺扫地僧

扫码关注云+社区

领取腾讯云代金券