用java 写爬虫

先从一个简单的例子看起。
获取百度“http://www.baidu.com”网页源码

package cn.com.spider;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Spider {
 public static void main(String[] args) {
  String url = "http://www.baidu.com";
  String result = "";
    BufferedReader in = null;
    try {
  URL  realUrl = new URL(url);
 
   URLConnection con = realUrl.openConnection();
  con.connect();
  in = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8"));
  String line;
  while((line=in.readLine())!=null){
   
   result+=line;
  }
  
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
    finally{
     if(in!=null){
      try {
    in.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
     }
    }
    System.out.println(result);
 }
}

——————————————————————————————————————————————————————————————————
1.用到了net包
2.关键步骤:初始化一个连接,从该连接中获得输入流,从流中取得数据,注意编码格式要与网页源码格式一致,网页的编码格式可以在起源码中的“charset”的值获取。
步骤很简单,我们来研究下这个连接connection里有什么。
URLConnection 是根据各种协议交给不同的协议处理实现子类去处理的,这是典型的多态。

 http:// 的 HTTP 协议交给 java.net.HttpURLConnection 的子类 sun.net.www.protocol.http.HttpURLConnection 处理
 ftp:// 的 FTP 协议交给 URLConnection 的子类 sun.net.www.protocol.ftp.FtpURLConnection 处理
 file:// 的 FILE 协议交给 URLConnection 的子类 sun.net.www.protocol.file.FileURLConnection 处理
 https:// 的 HTTPS 协议交给 javax.net.ssl.HttpsURLConnection 的子类 sun.net.www.protocol.https.HttpsURLConnectionImpl 处理
 jar:// 的交给 java.net.JarURLConnection 子类 sun.net.www.protocol.jar.JarURLConnection 处理
 mailto:// 的交给 URLConnection 的子类 sun.net.www.protocol.mailto.MailToURLConnection 处理

URLConnection是一个抽象类,根据网址类型返回不同的协议处理子类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值