函数

  • page.childframescount
  • page.childframesname
  • page.close
  • page.currentframename
  • page.deletelater
  • page.destroyed
  • page.evaluate
  • page.initialized
  • page.injectjs
  • page.javascriptalertsent
  • page.javascriptconsolemessagesent
  • page.loadfinished
  • page.loadstarted
  • page.openurl
  • page.release
  • page.render
  • page.resourceerror
  • page.resourcereceived
  • page.resourcerequested
  • page.uploadfile
  • page.sendevent
  • page.setcontent
  • page.switchtochildframe
  • page.switchtomainframe
  • page.switchtoparentframe
  • page.addcookie
  • page.deletecookie
  • page.clearcookies

回调处理程序/

列表中的所有页面的事件:

  • oninitialized
  • onloadstarted
  • onloadfinished
  • onurlchanged
  • onnavigationrequested
  • onrepaintrequested
  • onresourcerequested
  • onresourcereceived
  • onresourceerror
  • onresourcetimeout
  • onalert
  • onconsolemessage
  • onclosing
page.onInitialized = function() {
  console.log("page.onInitialized");
  printArgs.apply(this, arguments);
  };
  page.onLoadStarted = function() {
  console.log("page.onLoadStarted");
  printArgs.apply(this, arguments);
  };
  page.onLoadFinished = function() {
  console.log("page.onLoadFinished");
  printArgs.apply(this, arguments);
  };
  page.onUrlChanged = function() {
  console.log("page.onUrlChanged");
  printArgs.apply(this, arguments);
  };
  page.onNavigationRequested = function() {
  console.log("page.onNavigationRequested");
  printArgs.apply(this, arguments);
  };
  page.onRepaintRequested = function() {
  console.log("page.onRepaintRequested");
  printArgs.apply(this, arguments);
  };
   
  if (logResources === true) {
  page.onResourceRequested = function() {
  console.log("page.onResourceRequested");
  printArgs.apply(this, arguments);
  };
  page.onResourceReceived = function() {
  console.log("page.onResourceReceived");
  printArgs.apply(this, arguments);
  };
  }
   
  page.onClosing = function() {
  console.log("page.onClosing");
  printArgs.apply(this, arguments);
  };
   
  // window.console.log(msg);
  page.onConsoleMessage = function() {
  console.log("page.onConsoleMessage");
  printArgs.apply(this, arguments);
  };
   
  // window.alert(msg);
  page.onAlert = function() {
  console.log("page.onAlert");
  printArgs.apply(this, arguments);
  };
  // var confirmed = window.confirm(msg);
  page.onConfirm = function() {
  console.log("page.onConfirm");
  printArgs.apply(this, arguments);
  };
  // var user_value = window.prompt(msg, default_value);
  page.onPrompt = function() {
  console.log("page.onPrompt");
  printArgs.apply(this, arguments);
  };
   
  ////////////////////////////////////////////////////////////////////////////////
   
  setTimeout(function() {
  console.log("");
  console.log("### STEP 1: Load '" + step1url + "'");
  page.open(step1url);
  }, 0);
   
  setTimeout(function() {
  console.log("");
  console.log("### STEP 2: Load '" + step2url + "' (load same URL plus FRAGMENT)");
  page.open(step2url);
  }, 5000);
   
  setTimeout(function() {
  console.log("");
  console.log("### STEP 3: Click on page internal link (aka FRAGMENT)");
  page.evaluate(function() {
  var ev = document.createEvent("MouseEvents");
  ev.initEvent("click", true, true);
  document.querySelector("a[href='#Event_object']").dispatchEvent(ev);
  });
  }, 10000);
   
  setTimeout(function() {
  console.log("");
  console.log("### STEP 4: Click on page external link");
  page.evaluate(function() {
  var ev = document.createEvent("MouseEvents");
  ev.initEvent("click", true, true);
  document.querySelector("a[title='JavaScript']").dispatchEvent(ev);
  });
  }, 15000);
   
  setTimeout(function() {
  console.log("");
  console.log("### STEP 5: Close page and shutdown (with a delay)");
  page.close();
  setTimeout(function(){
  phantom.exit();
  }, 100);
  }, 20000);

网络监控

var page = require('webpage').create();
page.onResourceRequested = function(request) {
console.log('Request ' + JSON.stringify(request, undefined, ));
};
page.onResourceReceived = function(response) {
console.log('Receive ' + JSON.stringify(response, undefined, ));
};
page.open(url);

phantomjs 开发爬虫框架的更多相关文章

  1. 《Python3网络爬虫开发实战》PDF+源代码+《精通Python爬虫框架Scrapy》中英文PDF源代码

    下载:https://pan.baidu.com/s/1oejHek3Vmu0ZYvp4w9ZLsw <Python 3网络爬虫开发实战>中文PDF+源代码 下载:https://pan. ...

  2. C# 爬虫框架实现 流程_各个类开发

    目录链接:C# 爬虫框架实现 概述 对比通用爬虫结构,我将自己写的爬虫分为五个类实现: Spider主类:负责设置爬虫的各项属性 Scheduler类:负责提供URL到下载类,接收URL并做去重 Do ...

  3. 学习用java基于webMagic+selenium+phantomjs实现爬虫Demo爬取淘宝搜索页面

    由于业务需要,老大要我研究一下爬虫. 团队的技术栈以java为主,并且我的主语言是Java,研究时间不到一周.基于以上原因固放弃python,选择java为语言来进行开发.等之后有时间再尝试pytho ...

  4. 分布式爬虫框架XXL-CRAWLER

    <分布式爬虫框架XXL-CRAWLER> 一.简介 1.1 概述 XXL-CRAWLER 是一个分布式爬虫框架.一行代码开发一个分布式爬虫,拥有"多线程.异步.IP动态代理.分布 ...

  5. php 爬虫框架

    发现两款不错的爬虫框架,极力推荐下: phpspider 一款优秀的PHP开发蜘蛛爬虫 官方下载地址:https://github.com/owner888/phpspider 官方开发手册:http ...

  6. 洗礼灵魂,修炼python(72)--爬虫篇—爬虫框架:Scrapy

    题外话: 前面学了那么多,相信你已经对python很了解了,对爬虫也很有见解了,然后本来的计划是这样的:(请忽略编号和日期,这个是不定数,我在更博会随时改的) 上面截图的是我的草稿 然后当我开始写博文 ...

  7. Scrapy爬虫框架教程(四)-- 抓取AJAX异步加载网页

    欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction ...

  8. 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...

  9. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JA ...

随机推荐

  1. Find The Multiply

    Find The Multiply poj-1426 题目大意:给你一个正整数n,求任意一个正整数m,使得n|m且m在十进制下的每一位都是0或1. 注释:n<=200. 想法:看网上的题解全是b ...

  2. 微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

    微信公众号支付官方demo错误, 公众号支付只能用在微信里,也就是微信内部浏览器. 1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode ...

  3. Python打包工具setuptools的使用

    将我们写的Python程序发布成包后,可以使其能够安装使用. 在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试. setuptools是常用的打包工具. 一个简单 ...

  4. python clock装饰器 计算函数执行时间,执行结果及传入的参数

    import time import functools def clock(func): @functools.wraps(func)#还原被装饰函数的__name__和__doc__属性 def ...

  5. 201421123042 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现 ...

  6. Hibernate之Hibernate的下载与安装

    Hibernate用法十分简单,当我们在Java项目中引入Hibernate框架之后,就能以面向对象的方式来操作关系数据库了. 下载: 登陆Hibernate官网,下载Hibernate压缩包,win ...

  7. 【技巧】Java工程中的Debug信息分级输出接口

    也许本文的标题你们没咋看懂.但是,本文将带大家领略输出调试的威力. 灵感来源 说到灵感,其实是源于笔者在修复服务器的ssh故障时的一个发现. 这个学期初,同袍(容我来一波广告产品页面,同袍官网)原服务 ...

  8. python之路--day15--常用模块之logging模块

    常用模块 1 logging模块 日志级别:Noset (不设置) Debug---(调试信息)----也可用10表示 Info--(消息信息)----也可用20表示 Warning---(警告信息) ...

  9. python虚拟环境搭建大全(转)

    Pipenv & 虚拟环境 本教程将引导您完成安装和使用 Python 包. 它将向您展示如何安装和使用必要的工具,并就最佳做法做出强烈推荐.请记住, Python 用于许多不同的目的.准确地 ...

  10. 初学者如何查阅自然语言处理(NLP)领域学术资料

    1. 国际学术组织.学术会议与学术论文 自然语言处理(natural language processing,NLP)在很大程度上与计算语言学(computational linguistics,CL ...