利用phantomjs模拟登录网站(帐号登陆)

首先我们就以CSDN博客的登录为例,这里的登陆账号和密码,读者可以使用自己的,只要将登录帐号和密码修改一下就可以登录并抓取网页数据下来了,首先我们利用eclipse创建一个java工程,主要是用来调用phantomjs,java工程目录如下截图:

接着以下就是我们在Test.java中的代码:

package com.xzz.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();//Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法
Process process = null;  
   String url = "https://passport.csdn.net/account/login?from=http://www.csdn.net";//要访问的网址
   try {  
    process = rt.exec("C:/Users/Administrator/Desktop/phantomjs-2.5.0-beta2-windows/phantomjs-2.5.0-beta2-windows/bin/phantomjs.exe " +"C:/Users/Administrator/Desktop/codesss.js "+url);//将命令行的数据输入到运行环境中并执行,其中的路径最好写成绝对路径,

       InputStream in = process.getInputStream();  //这一部分就是通过java流的方式来获取到抓取下来的网页信息,
       InputStreamReader reader = new InputStreamReader(in, "UTF-8");  
       BufferedReader br = new BufferedReader(reader);
       StringBuffer sbf = new StringBuffer();  
       String tmp = "";  
       while((tmp = br.readLine())!=null){      
        sbf.append(tmp);      
        }  
       System.out.println(sbf.toString());
       } catch (IOException e) {  
        e.printStackTrace();  
        }  
   }
}

以上部分只是登陆网页的准备工作,接着我们要利用js来操作phtomjs这个无头浏览器,

首先我们进入到qq空间的登录网页页面,然后右键打开网页源代码,如下截图,然后找到username和password输入框:

 

然后开始编写登陆的js文件。如下代码所示:

system = require('system');//这里是获取java文件里的送到虚拟机中的命令行数据
var address = system.args[1];//从这里我们可以得到csdn登录页的url
var page = require('webpage').create();//创建一个page,可查看相关的文档了解
page.open(address,function(status){
if(status === 'success'){
var cookiesStr="";
        var cookies=page.cookies;
        for(var i in cookies){
            cookiesStr=cookiesStr+cookies[i].name+"="+cookies[i].value+";";         
        }
        console.log(cookiesStr);
page.evaluate(function() {
            $("#username")[0].value='***************';//这里填写帐号
            $("#password")[0].value='*******';//这里填写密码
            $(".logging").click();//登录按钮的动作
        });
console.log("........................");
var cookiesStra = "";
var cookiesc = page.cookies;
for(var j in cookiesc){
            cookiesStra=cookiesStra+cookiesc[j].name+"="+cookiesc[j].value+";";
        }
console.log(cookiesStra);
setTimeout('print_cookies()',10000);
}else{
console.log("error.....");
phantom.exit();
}
});

//当登陆成功后,跳转到想要取得页面,并把网页的数据抓下来
function print_cookies(){
    console.info(JSON.stringify(page.cookies, undefined, 4));
var page1 = require('webpage').create();
//phantom.addcookie
page1.open("http://blog.csdn.net/xiezuozhen",function(status){
if(status === 'success'){
console.log(page1.content);
var cookiesStrb="";
        var cookiesb=page1.cookies;
        for(var k in cookiesb){
            cookiesStrb=cookiesStrb+cookiesb[k].name+"="+cookiesb[k].value+";";         
        }
console.log(cookiesStrb);
page1.evaluate(function(){






});
phantom.exit()
}else{
console.log("error.....");
phantom.exit();
}
});
}

到此phantomjs模拟登录网页的操作基本完成,并且还可以抓取登陆后的网页的数据。如果需要对网页数据进行进一步的筛选操作,获取自己想要的信息,可以看以后更新的博客或者加本人qq:1925036827,可一起讨论相关的问题。相关的资源可以到QQ群:623962264中下载.

以下是抓取下来的网页的数据截图:

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泛舟五湖之间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值