700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 利用phantomjs模拟登录网站(帐号登陆)

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

时间:2021-12-22 05:15:54

相关推荐

利用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 = "/account/login?from=";//要访问的网址

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("/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中下载.

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。