`

phantomjs

 
阅读更多
最近做爬虫,基于网页上面有很多ajax请求,可以采用httpclient找到相应的ajax,这样做比较麻烦,然后采用phantomjs,直接可以获取到网页所有信息。
public static String dealWithAjax(String url) throws IOException {    
Runtime rt = Runtime.getRuntime();    
Process p = rt.exec("phantomjs.exe D:\\rj\\RedisImportMysql\\src\\js\\test.js "+url);  
InputStream is = p.getInputStream();    
BufferedReader br = new BufferedReader(new InputStreamReader(is));    
StringBuffer sbf = new StringBuffer();    
String tmp = "";    
while((tmp = br.readLine())!=null){    
sbf.append(tmp);  
sbf.append("\n");
}    
sbf.append("-----------------------------------------------------------------------");
return sbf.toString();    
}    

public static void main(String[] args) throws IOException {    
// System.out.println(getAjaxCotnent("http://shixin.court.gov.cn/personMore.do")); 
String s = dealWithAjax("http://list.tmall.com/search_product.htm?q=%CA%D6%BB%FA&type=p&vmarket=&spm=a222r.7716956.a2227oh.d100&from=..pc_1_searchbutton");
System.out.println(s);
FileUtil.writeFile("d://a.txt", "utf-8", s,true);

}



test.js源码:
//codes.js    
system = require('system')    
address = system.args[1];//获得命令行第二个参数 接下来会用到    
//console.log('Loading a web page');    
var page = require('webpage').create();    
var url = address;  
var newUrl ;
//console.log(url);    
page.open(url, function (status) {    
//Page is loaded!    
if (status !== 'success') {    
console.log('Unable to post!');    
} else {    
//console.log(page.content);    
var content = page.evaluate(function() {  
//var elements =  document.querySelector("#xy-impcon-B");//示范下如何使用页面的jsapi去操作页面的  www.oicqzone.com
//return elements.innerHTML
return document.querySelector("*").innerHTML;
});    
console.log(content);
}       
});
page.onLoadFinished= function(){
console.log("执行完毕。。。。。。。。");

//window.scrollTo(0,10000);
//window.document.body.scrollTop = document.body.scrollHeight; 


//page.sendEvent('keydown', page.event.key.40, null, null);
//var evtObj = document.createEvent('KeyboardEvent');
//ev.initEvent("click", true, true);
//evtObj.initKeyEvent('keydown', true, true, window, false, false, false, false, 40, 0 );
//document.dispatchEvent(evtObj);
console.log("事件。。。。。。。。。。。。。。。。。。。。。。。。。。。");
phantom.exit();
};
page.onUrlChanged = function(targetUrl) {
console.log('New URL: ' + targetUrl);
newUrl = targetUrl;
/*
* if((targetUrl.indexOf("http://www.baidu.com/s?"))>-1){
* page.open(targetUrl); }
*/

};
page.onResourceReceived = function(response) {
console.log('resource rec page.url---'+page.url);
console.log('reponse url---'+response.url);

};

page.onResourceError = function(resourceError) {
console.log('Unable to load resource (#' + resourceError.id + 'URL:'
+ resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: '
+ resourceError.errorString);
};



phantom.onError = function(msg, trace) {
var msgStack = ['PHANTOM ERROR: ' + msg];
if (trace && trace.length) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function +')' : ''));
});
}
console.error(msgStack.join('\n'));
phantom.exit(1);
};
//page.colse()



分享到:
评论

相关推荐

    C#使用Selenium+PhantomJS抓取数据

    在进行网络爬虫开发时,有时我们需要处理那些依赖JavaScript动态渲染的网页,这时C#结合Selenium与PhantomJS就成为一个有效的解决方案。本文将详细介绍如何在C#环境中利用Selenium WebDriver和PhantomJS来抓取此类...

    phantomjs-2.1.1.zip

    PhantomJS是一个基于Webkit的服务器端JavaScript API,它允许开发者无须浏览器支持即可执行JavaScript、渲染网页并获取结果。2.1.1是PhantomJS的一个版本,它提供了无头浏览器的功能,常用于自动化测试、网页截图、...

    phantomjs-2.1.1 下载

    PhantomJS是一个开源的Webkit库,用于自动化浏览器任务,如网页截屏、网页内容抓取和功能测试。它的核心是基于WebKit引擎,因此能够处理HTML5和CSS3,同时无需真实浏览器窗口即可运行JavaScript。这使得PhantomJS在...

    phantomjs-2.1.1-windows.zip

    PhantomJS是一款强大的工具,尤其在自动化测试、网页截图、网页内容抓取等领域有着广泛的应用。这个名为"phantomjs-2.1.1-windows.zip"的压缩包文件,是PhantomJS的一个特定版本,针对Windows操作系统进行了优化。在...

    编译好的arm版的phantomjs2.1.1二进制包

    PhantomJS是一个基于Webkit内核的无头浏览器,它主要用于自动化测试、网页截屏、网页内容抓取等场景。这个资源提供的是针对ARM架构编译好的2.1.1版本的二进制包,意味着它已经过编译,可以直接在支持ARM指令集的设备...

    phantomjs-2.1.1-windows.zip下载良心2积分

    PhantomJS是一款基于Webkit内核的无头浏览器,它是一个开源项目,广泛应用于自动化测试、网页截屏、网络监控等多个领域。标题提到的是 PhantomJS 的一个特定版本——2.1.1,针对Windows操作系统。由于官网下载速度较...

    phantomjs1.9.8历史版本用于爬虫

     System.setProperty("phantomjs.binary.path", "./phantomjs/win/phantomjs.exe");//设置PhantomJs访问路径 }  DesiredCapabilities desiredCapabilities = DesiredCapabilities.phantomjs();  //设置参数 ...

    Python3+PhantomJS登陆网站

    标题中的"Python3+PhantomJS登陆网站"指的是使用Python3编程语言结合PhantomJS工具来实现自动登录网站的功能。PhantomJS是一个无头浏览器,它允许开发者在没有图形用户界面的情况下运行JavaScript,这对于自动化任务...

    Phantomjs抓取渲染JS后的网页(Python代码)

    ### Phantomjs抓取渲染JS后的网页(Python代码) #### 一、Phantomjs简介 Phantomjs被定义为一个无头浏览器(headless browser),它实际上是一个基于WebKit引擎的脚本可控制的“浏览器”。虽然它无法显示网页内容...

    phantomjs,PhantomJS

    PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供...

    基于C#.NET+PhantomJS+Sellenium的高级网络爬虫系统设计与实现

    《基于C#.NET+PhantomJS+Selenium的高级网络爬虫系统设计与实现》 本文将深入探讨一种高级网络爬虫系统的构建方法,该系统利用C#.NET作为主要开发语言,结合PhantomJS和Selenium工具,实现了高效、稳定且功能强大的...

    phantomjs-2.1.1-windows和echarts-convert

    echarts-convert.js和PhantomJS工具 PhantomJs (1)一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。 (2)提供javascript API...

    java使用phantomjs把echarts转图片 静态资源

    在这个场景下,Java后端可以利用PhantomJS这个无头浏览器工具来实现这一目标。本文将详细讲解如何在Java环境中使用PhantomJS将ECharts图表转化为图片。 首先,我们需要理解ECharts。ECharts是百度推出的一个基于...

    phantomjs-2.1.1-windows

    PhantomJS是一个开源的Webkit库,它提供了一个无头浏览器环境,可以在命令行界面下运行,无需用户界面。这个“phantomjs-2.1.1-windows”压缩包是PhantomJS的一个特定版本,专为Windows操作系统设计。在本文中,我们...

    PhantomJS各个内核版本,解压即用

    PhantomJS安装非常简单,官网http://phantomjs.org/download.html下载最新的安装包, 安装包有Windows,Mac OS X, Linux 64/32 bit,选择对应的版本下载解压即可使用,在下载包里有个example文件夹,里面对应了许多...

    phantomjs-windows版

    PhantomJS是一款基于Webkit内核的无头浏览器,它主要用于自动化网页抓取、测试、屏幕截图等任务。"无头"意味着它在后台运行,没有用户界面,这对于自动化脚本和服务器端应用非常有用。PhantomJS支持JavaScript API,...

    国产arm架构操作系统下phantomjs编译后的运行文件

    标题提到的是“国产arm架构操作系统下phantomjs编译后的运行文件”,这涉及到两个主要技术领域:国产麒麟操作系统和基于ARM架构的硬件平台,以及PhantomJS这个无头浏览器的编译与运行。 首先,让我们了解一下“国产...

    phantomjs自动化测试demo

    PhantomJS是一款基于Webkit内核的无头浏览器,它被广泛用于自动化测试、网页截屏、网络监控等场景。这个“phantomjs自动化测试demo”是一个实例,展示了如何使用PhantomJS进行自动化测试。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics