phantomjs 开发爬虫框架
函数
- 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 开发爬虫框架的更多相关文章
- 《Python3网络爬虫开发实战》PDF+源代码+《精通Python爬虫框架Scrapy》中英文PDF源代码
下载:https://pan.baidu.com/s/1oejHek3Vmu0ZYvp4w9ZLsw <Python 3网络爬虫开发实战>中文PDF+源代码 下载:https://pan. ...
- C# 爬虫框架实现 流程_各个类开发
目录链接:C# 爬虫框架实现 概述 对比通用爬虫结构,我将自己写的爬虫分为五个类实现: Spider主类:负责设置爬虫的各项属性 Scheduler类:负责提供URL到下载类,接收URL并做去重 Do ...
- 学习用java基于webMagic+selenium+phantomjs实现爬虫Demo爬取淘宝搜索页面
由于业务需要,老大要我研究一下爬虫. 团队的技术栈以java为主,并且我的主语言是Java,研究时间不到一周.基于以上原因固放弃python,选择java为语言来进行开发.等之后有时间再尝试pytho ...
- 分布式爬虫框架XXL-CRAWLER
<分布式爬虫框架XXL-CRAWLER> 一.简介 1.1 概述 XXL-CRAWLER 是一个分布式爬虫框架.一行代码开发一个分布式爬虫,拥有"多线程.异步.IP动态代理.分布 ...
- php 爬虫框架
发现两款不错的爬虫框架,极力推荐下: phpspider 一款优秀的PHP开发蜘蛛爬虫 官方下载地址:https://github.com/owner888/phpspider 官方开发手册:http ...
- 洗礼灵魂,修炼python(72)--爬虫篇—爬虫框架:Scrapy
题外话: 前面学了那么多,相信你已经对python很了解了,对爬虫也很有见解了,然后本来的计划是这样的:(请忽略编号和日期,这个是不定数,我在更博会随时改的) 上面截图的是我的草稿 然后当我开始写博文 ...
- Scrapy爬虫框架教程(四)-- 抓取AJAX异步加载网页
欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction ...
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JA ...
随机推荐
- linux --> fork()详解
fork()详解 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个 ...
- werkzeug(flask)中的local,localstack,localproxy探究
1.关于local python中有threading local处理方式,在多线程环境中将变量按照线程id区分 由于协程在Python web中广泛使用,所以threading local不再满足需 ...
- location和location.href跳转url的区别
使用 location = url 跳转,如果本地之前已经载入过该页面并有缓存,那么会直接读取本地的缓存,缓存机制是由本地浏览器设置决定的.状态码为: 200 OK (from cache) . ...
- 项目Alpha冲刺Day4
一.会议照片 二.项目进展 1.今日安排 学习熟悉前台框架且搭建前台页面框架. 2.问题困难 使用了前端的构建工具webpack,困难在于怎么使用gradle结合它连同后台框架中的配置一起打包,因为本 ...
- Flask 测试
测试是每个应用系统发布前必须经历的步骤,自动化测试对测试效率的提高也是毋庸置疑的.对于Flask应用来说,当然可以使用Web自动化测试工具,比如Selenium等来测.Flask官方推荐的自动化测试方 ...
- Java ftp 上传文件和下载文件
今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...
- intellij idea 找不到或无法加载主类
解决intellij idea 找不到或无法加载主类,请看以下图文介绍 然后idea会重启,等idea启动后 右侧的maven clean 一下,然后再compile就解决了
- 自动化服务部署(一):Linux下安装JDK
自动化测试的主要目的是为了执行回归测试.当然,为了模拟真实的用户操作,一般都是在UAT或者生产环境进行回归测试. 为了尽量避免内网和外网解析对测试结果的影响,将自动化测试服务部署在外网的服务器是比较好 ...
- tomca配置文件自动还原问题的解决 server.xml content.xml 等
当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content.xml文件. 但是当我们修改完后重启Tomcat服务器时发现xml文件又被还原了,修改无效果. 为 ...
- Spring Security 入门(3-11)Spring Security 的登录密码验证过程 UsernamePasswordAuthenticationFilter
认证过程如下 一.先判断请求(请求必须是post请求)地址是否为配置的 login-processing-url 值(默认/j_spring_security_check),如果不是,则放行,进入下一 ...