函数

  • 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. Loadrunner使用时IE浏览器打不开怎么办

    1.ie浏览器去掉启用第三方浏览器扩展 2.loadrunner11 键盘F4,在browser Emulation点击change,在弹出的提示框中Browser version 选择8.0,pla ...

  2. 算法题丨Longest Consecutive Sequence

    描述 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...

  3. java中的异常类型以及区别????

    一.引言 根据JDK的文档我们能够找到异常所在的包:java.lang.Throwable中,Throwable是所有异常类的根类,error是错误,在java.lang.error中,而Except ...

  4. spring学习笔记一 入门及配置

    Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Sp ...

  5. Python 二分查找

    (非递归实现) def binary_search(alist, item): first = 0 last = len(alist)-1 while first<=last: midpoint ...

  6. Scrum 冲刺 第七日

    Scrum 冲刺 第七日 站立式会议 燃尽图 今日任务安排 项目发布说明 站立式会议 返回目录 燃尽图 返回目录 今日任务安排 返回目录 项目发布说明 本版本的新功能 不只是简单打地鼠,还有一些不能打 ...

  7. easyUI combobox 添加空白项

    今天测试反馈了一个问题,希望可以在下拉框下面加一个空白的选项(下拉框用的是combobox方法). 开始分析这个问题: 首先,这个数据都是后台读出来的,那么我在后台直接添加可以么,答案是可以的,如果没 ...

  8. RESTful API 编写指南

    基于一些不错的RESTful开发组件,可以快速的开发出不错的RESTful API,但如果不了解开发规范的.健壮的RESTful API的基本面,即便优秀的RESTful开发组件摆在面前,也无法很好的 ...

  9. 1.phpStrom连接远程代码

    1.选择一个新的文件 2.选择自己需要的传输方式 3.添加项目名+路径 4.填写连接基本信息 5.配置成功,下载完毕后,设计本地与远程代码同步修改 自此本地修改代码,同时修改远程服务器代码就设置完毕~ ...

  10. jmeter入门(02)测试报告各项指标含义

    一.名词定义(时间单位ms) 1.聚合报告 Sample:本次测试场景共运行多少个请求: Average:平均响应时间: Median:统计意义上的响应时间中值: 90% line:所有线程中90%的 ...