phantomjs 简介「建议收藏」

phantomjs 简介「建议收藏」在爬虫、自然语言处理群320349384中的交流中,偶然接触到phantomjs、casper等相对于httpclient较新的框架及采集解决方案,微查之后发现方案可行,故尽清明三日之力,将其二次开发应用于百度元搜索信息采集项目中,达到预期效果,下一步将重点应用到腾讯微博采集和抢票抢手机项目中。下面,将分步骤介绍一下。  一、phantomjs介绍   (1)一个基于web

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
 在爬虫、自然语言处理群320349384中的交流中,偶然接触到phantomjs、casper等相对于httpclient较新的框架及采集解决方案,微查之后发现方案可行,故尽清明三日之力,将其二次开发应用于百度元搜索信息采集项目中,达到预期效果,下一步将重点应用到腾讯微博采集和抢票抢手机项目中。下面,将分步骤介绍一下。

    一、phantomjs介绍

     (1)一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。

     (2)提供javascript API接口,即通过编写js程序可以直接与webkit内核交互,在此之上可以结合java语言等,通过java调用js等相关操作,从而解决了以前c/c++才能比较好的基于webkit开发优质采集器的限制。

     (3)提供windows、linux、mac等不同os的安装使用包,也就是说可以在不同平台上二次开发采集项目或是自动项目测试等工作。

    二、phantomjs常用API介绍

      近几天的学习找了不少资料,也包括官网的,但其相关学习资料还是相对较少的,很多问题都是进行N多测试才搞清楚,在此耗费了不少时间。在学习时,结合官网和本篇博文效果会更好。

     (1)常用内置几大对象

var system=require('system');     //获得系统操作对象,包括命令行参数、phantomjs系统设置等信息
var page = require('webpage');   //获取操作dom或web网页的对象,通过它可以打开网页、接收网页内容、request、response参数,其为最核心对象。
var fs = require('fs');   //获取文件系统对象,通过它可以操作操作系统的文件操作,包括read、write、move、copy、delete等。

      (2) 常用API

page.open(url,function(status) {} //通过page对象打开url链接,并可以回调其声明的回调函数,其回调发生的时机为该URL被彻底打开完毕,即该URL所引发的请求项被全部加载完,但ajax请求是与它的加载完成与否没有关系

page.onLoadStarted = function() {}//当page.open调用时,回首先执行该函数,在此可以预置一些参数或函数,用于后边的回调函数中
page.onResourceError = function(resourceError) {} //page的所要加载的资源在加载过程中,出现了各种失败,则在此回调处理
page.onResourceRequested = function(requestData, networkRequest) {} //page的所要加载的资源在发起请求时,都可以回调该函数
page.onResourceReceived = function(response) {} //page的所要加载的资源在加载过程中,每加载一个相关资源,都会在此先做出响应,它相当于http头部分,  其核心回调对象为response,可以在此获取本次请求的cookies、userAgent等
page.onConsoleMessage = function (msg) {}//欲在执行web网页时,打印一些输出信息到控制台,则可以在此回调显示。
page.onAlert = function(msg) {} //phantomjs是没有界面的,所以对alert也是无法直接弹出的,故phantomjs以该函数回调在page在执行过程中的alert事件
page.onError = function(msg, trace) {} //当page.open中的url,它自己(不包括所引起的其它的加载资源)出现了异常,如404、no route to web site等,都会在此回调显示。
page.onUrlChanged = function(targetUrl) {} // 当page.open打开的url或是该url在打开过程中基于该URL进行了跳转,则可在此函数中回调。
page.onLoadFinished = function(status){}  // 当page.open的目标URL被真正打开后,会在调用open的回调函数前调用该函数,在此可以进行内部的翻页等操作
page.evaluate(function(){});// 在所加载的web page内部执行该函数,像翻页、点击、滑动等,均可在此中执行
page.render("");//将当前page的现状渲染成图片,输出到指定的文件中去。

     (3)注意事项

           1、区分phantomjs的对象和打开的web page的对象,如document、window等,两者都有,在调用page.evaluate和不调用的时候,注意区分二者的范围,容易在调试时出现很多的问题,且不好发现。    

           2、page.injectJs和page.includeJs的区别,前者侧重本地的js文件,与libraryPath挂购,后者侧重网络js文件,尤其在引入jquery等第三方库时,会经常遇到。

           3、编码问题,两个重要参数,–output-encoding,–script-encoding,前者为输出编码,后者为所使用js、参数配置文件的编码,为方便起鉴,建议均采用utf-8编码,并注所应用到的目标文件的编码,以免引起很不可思议的异常,又无从查起。

   

     三、百度元搜索采集器

         主要是java se+js+phantomjs的应用,

      (1) 编写好js脚文程序,预留出所有可配置参数,并提供json文件传输相关参数。

      (2)  通过java程序,定义相关参数并生成对应的json文件。

      (3) 通过java命令行调用API,调用phantomjs命令,并传入js、配置文件路径,从而开启爬虫。

       (4)  首先采集关键词的搜索页的链接集合,最后统一去遍历采集具体的对象网页。


    四、应用小结

        经过上述的项目实测应用,它将非常方便的应用于模拟登陆,如微博、电商类,或是小米、火车票抢票等项目中,下一步计划将其与上述项目结合,开发更有意思的项目。    

    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159341.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月26日 下午2:16
下一篇 2022年7月26日 下午2:16


相关推荐

  • PyCharm快捷键大全-你想要的全都有

    PyCharm快捷键大全-你想要的全都有代码编辑快捷键序号快捷键作用 1CTRL ALT SPACE 快速导入任意类 2CTRL SHIFT ENTER 代码补全 3SHIFT F1 查看外部文档 4CTRL Q 快速查找文档 5CTRL P 参数信息 在方法中调用的参数 6CTRL MOUSEOVERCOD 基本信息 7CTRL F1 显示错误或警告的描述 8CTRL I

    2026年3月27日
    2
  • snmp trap日志「建议收藏」

    snmp trap日志「建议收藏」日志类型有三种,file,syslog和snmptrapsnmptrapd.conf文件内容及参数snmptrapd手册:http://www.net-snmp.org/docs/man/snmptrapd.conf.html,http://www.net-snmp.org/wiki/index.php/Snmptrapd中文翻译:《snmptrapd.conf文件内容及参数》,而且详细列出了参数《SnmpTrap的发送和接收演示》IBM开发者网站关于snmptrap引用最.

    2022年8月20日
    26
  • 优化算法学习(LM算法)

    优化算法学习(LM算法)LM算法可以理解为**Gauss-Newton算法与最速下降法的结合**

    2022年10月1日
    6
  • redash+mysql_Redash – 安装和初试

    redash+mysql_Redash – 安装和初试前言当业务成长到一定规模之后 会有许多想看各种不同类型报表的需求 如果单独做在后台 那么无疑会浪费前端和后端开发的时间 所以一直都有在寻找一款好用的 BI 工具 后面查了一下 市面上好用的一些非商业的 BI 工具 主要的是 Superset Redash Metabase 这三种 评测请看 数据可视化的开源方案 SupersetvsRe 一 数据可视化的开源方案

    2026年3月18日
    0
  • Over Permission(越权)学习「建议收藏」

    Over Permission(越权)学习「建议收藏」OverPermission(越权)用户A的权限小于用户B的权限,此时用用户A的权限去操作用户B的数据,如果能够操作成功,就称之为越权操作。越权漏洞一般容易出现在权限页面(需要登录的页面)增、删、改、查的地方。越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。当用户对权限页面内的信息进行增、删、改、查的操作时,后台对当前用户的权限进行校验,看是否具备操作的权限,从而给出响应。如果校验规则过于简单,就容易出现越权漏洞。防止越权漏洞1、使用最小权限原则对用户进行赋权;2、使用

    2022年6月22日
    26
  • 目前最流行且免费的10个服务器性能监控工具

    目前最流行且免费的10个服务器性能监控工具WGCLOUD是国人开源的一款运维监控工具,它不同于zabbix等,wgcloud具有集成度高,易部署,易上手,自动化监控等特点,特别适合我们中小企业使用,可以极大降低我们的运维成本,因为一个实习生就

    2022年7月1日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号