记一次简单的网页数据抓取

之前有一个工作是到服务器上去复制一串文字下来,很简单的操作,但是需要重复50次左右,每次花费大概三分钟,一遍下来两个多小时就进去了。因此就做了这个工具自动抓取数据。

工具主要做三件事情:登陆,下载,截取。

登陆部分由于服务器使用的是windows安全校验,如图:

需要模拟登陆才能获取到网页数据。

首先用fiddler抓取http传输的数据包,在报头部分发现一串字符串:

经过base64解密之后得到:Administrator:manage。

这个便是用户名:密码经过加密之后的字符串。而Authorization:Basic则是一种验证方式,一般通过setRequestProperty来设置。

 

搞定登陆之后就可以直接获取到网页内容再进行数据截取了。最后再在最外层加一个循环,将需要抓取的服务器地址一次执行一次,就能一次获取所有服务器上的数据了。

最后贴代码:

import java.io.*;
import java.net.*;

public class getPackageFromWeb {
    public static void main(String args[]) throws Exception {
        String[] servers ={"192.168.0.144:23342","192.168.0.144:23343"};
        StringBuilder result=new StringBuilder();
        for(int i=0;i<servers.length;i++){
            String packagelist = getWebPage("http://"+servers[i]+"/WmRoot/package-list.dsp");
            while(packagelist.indexOf("package-info.dsp?package=")!=-1){
                packagelist=packagelist.substring(packagelist.indexOf("package-info.dsp?package=")+25,packagelist.length());
                String tempPackage=packagelist.substring(0, packagelist.indexOf("\""));
                result.append(tempPackage+",");
            }
            result.append("\n");
        }
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("c:\\result.csv"));
        bufferedWriter.write(result.toString());
        bufferedWriter.close();
    }

    public static String getWebPage(String Addr) throws Exception {
        String data = "";
        URL url = new URL(Addr);
        HttpURLConnection httpUrlCon = (HttpURLConnection) url.openConnection();
        String author = "Basic QWRtaW5pc3RyYXRvcjptYW5hZ2U=";
        httpUrlCon.setRequestProperty("Authorization", author); 
        httpUrlCon.connect();
        InputStreamReader inRead = new InputStreamReader(
                httpUrlCon.getInputStream(),"UTF-8");
        BufferedReader bufRead = new BufferedReader(inRead);
        StringBuffer strBuf = new StringBuffer();
        String line = "";
        while ((line = bufRead.readLine()) != null) {
            strBuf.append(line);
        }
        data=strBuf.toString();
        return data;
    }
}

 

转载于:https://www.cnblogs.com/bgWebMethods/p/4252103.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值