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)  首先采集关键词的搜索页的链接集合,最后统一去遍历采集具体的对象网页。


    四、应用小结

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

    

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Referenced file contains errors 完美解决方法

    Referenced file contains errors 完美解决方法Referenced file contains errors 完美解决方法

  • mongobd Databus

    mongobd Databushttp://www.cnblogs.com/huangxincheng/archive/2012/02/19/2357846.html–8天学习http://www.xuebuyuan.com/554017.htmlhttp://www.habadog.com/2011/08/03/mongodb-shell-1-overview/ –mongodb与jshttp

    2022年10月16日
  • mysql 错误1062_mysql主从切换步骤

    mysql 错误1062_mysql主从切换步骤周末的时候,突然收到报警的短信,是一台slave服务器sql_thread不为YES,唉,还能不能愉快的过周末啊。上服务器一看是,是主键冲突导致从库中断,也是Last_SQL_Errno:1062错误,我们常用的方法是跳过错误,比如SETGLOBALSQL_SLAVE_SKIP_COUNTER=1或者直接slave-skip-errors=1062,这样确实解决了问题,恢复了复制。但是久而…

  • 写好代码的10个秘密

    写好代码的10个秘密

  • HTML导航栏的四种制作方法

    HTML导航栏的四种制作方法1.首先,大家可以直接使用html5中的导航栏标签<nav></nav>具体代码如下<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title>导航栏</title> </

  • pycharm django环境搭建_宝塔Linux怎么搭建asp程序

    pycharm django环境搭建_宝塔Linux怎么搭建asp程序今天来简单总结一下使用Pycharm和Django来搭建一个最简单的PythonWeb应用(就是我们所说的‘HelloWorld’)。在这里,我们首先假设已经安装好了Python(2.x和3.x版本均可)。安装Django  无论是Python2.x还是Python3.x版本,都可以使用pip来安装Django。在控制台使用如下命令:pipinstalldjango安装成功后,在i

发表回复

您的电子邮箱地址不会被公开。

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