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


相关推荐

  • 【Android】实现登录、注册、数据库操作(极简洁)[通俗易懂]

    我最近又写了一篇文,是这篇文章的升级版,借此文引流一下:《【Android】实现登录、注册、数据库操作(极复杂)》本篇源码地址(进去找JustLoginRegister):(2019-12-05更新:我已经把Gradle更新到3.5最新版了,dependencies也已经都迁移到androidx了,特此说明)https://github.com/littlecurl/AppProj…

    2022年4月17日
    229
  • Win10(Windows)系统中窗口切换 最大最小化窗口等快捷键

    Win10(Windows)系统中窗口切换 最大最小化窗口等快捷键一 窗口视图相关的快捷键最小化当前窗口 Alt 空格键 N 显示桌面 Win 键 D 再次按 Win D 则恢复显示原来的所有窗口 锁屏 Win 键 L 最大化当前窗口 将窗口大小还原等 Win 键 四个方向键 Win 键 上箭头 最大化当前窗口到全屏模式 Win 键 向下箭头 恢复窗口的大小 然后最小化窗口 Win 键 左箭头 捕捉当前窗口到屏幕的左半边 Win 键 右箭头 捕捉当前窗口到屏幕的右半边 切换窗口 Alt Tab 先按住 Alt 再点按 Tab 可按顺序往下切换窗口 继续按住 Al

    2026年3月17日
    1
  • 电脑使用小技巧_电脑的简单使用方法

    电脑使用小技巧_电脑的简单使用方法摘自龙族论坛的一些电脑小技巧XP提速超级迷你技巧面对越来越慢的机器,辱骂微软或是Intel都是徒劳,我在如意中,发现了一个小的不能再小的技巧:0&&image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}”>新建一个账号,最好是系统管理员,然后登录试试,速度是不

    2022年10月8日
    4
  • SQL基础语句汇总[通俗易懂]

    SQL基础语句汇总[通俗易懂]引言语法基础连接数据库查看数据库使用数据库查看表查看表结构建表修改表添加字段移除字段变更字段插入全字段插入个别字段插入普通查询单表全字段查询单表个别字段查询多表查询条件查询单表条件查询多表条件查询嵌套查询并查询交查询删除更新常用函数求和求平均值计数求最大值求最小值常用的修饰符distinct字段中值唯一limit查询结果数限制

    2022年5月2日
    56
  • css 滚动条样式和table

    css 滚动条样式和table1 滚动条美化 webkit scrollbar 滚动条整体部分 webkit scrollbar track 滚动条滑轨 webkit scrollbar track piece 内层轨道 滚动条中间部分 webkit scrollbar thumb 滚动条滑块 webkit scrollbar button 滑轨两头的监听按钮 webkit scrollbar button star

    2026年3月26日
    2
  • RTSP协议分析

    RTSP协议分析一 简介 RTSP RealTimeStre 实时流传输协议 是 TCP IP 协议体系中的一个基于文本的应用层协议 由哥伦比亚大学 网景和 RealNetworks 公司提交的 IETFRFC2326 标准 该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据 RTSP 在体系结构上位于 RTP 和 RTCP 之上 它使用 TCP 或 UDP 完成数据传输

    2026年3月17日
    1

发表回复

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

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