Java URL编程

java URL编程:统一资源定位符

  • 统一资源定位符,它表示 Internet 上某一资源的地址。通过 URL 我们可以访问 Internet 上的各种网络资源,可以通过URL的对象调用其相应的方法将资源读取(“下载”)。整个过程类似网络爬虫。
  • 我网络爬虫的URL也是采用这个方法。

下面是URL的方法:
public String getProtocol( ) 获取该URL的协议名
public String getHost( ) 获取该URL的主机名
public String getPort( ) 获取该URL的端口号
public String getPath( ) 获取该URL的文件路径
public String getFile( ) 获取该URL的文件名
public String getRef( ) 获取该URL在文件中的相对位置
public String getQuery( ) 获取该URL的查询名

下面的代码是对一个网站的网络爬虫,是获取了源代码。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

//url:统一资源定位符,一个URL对象对应一个互联网上的资源
//可以通过URL的对象调用其相应的方法将资源读取(“下载”)
public class TestURL {
    public static void main(String[] args) throws Exception {
        String charset = "UTF-8";
        //1.创建一个URL的对象
//      URL url = new URL("http://127.0.0.1:81/helloworld.txt");//File file = new File("文件的位置")
        URL url = new URL("http://tech.ifeng.com/");

        System.out.println("*******");
        System.out.println(url.getProtocol());
        System.out.println(url.getHost());
        System.out.println(url.getPort());
        System.out.println(url.getFile());
        System.out.println(url.getRef());
        System.out.println(url.getQuery());

        //如何将服务端的资源获读取进来
        //openStream()  InputStream输入流
        InputStream is = url.openStream();

//      byte[] b = new byte[20];
//      int len;
//      while((len = is.read(b))!= -1){
//          String str = new String(b,0,len);
//          System.out.println(str);
//      }
//      is.close();

        String line = "";
        StringBuffer buffer = new StringBuffer();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,charset));  
         while((line = reader.readLine()) != null){  
             buffer.append(line).append("\n");  
         }  
         System.out.println(buffer.toString());

        //如果既有数据的输入又有数据的输出,则考虑使用URLConnection
        URLConnection urlConn = url.openConnection();
        InputStream is1 = urlConn.getInputStream();
//      FileOutputStream fos = new FileOutputStream(new File("abc.txt"));

        FileWriter fw = new FileWriter("ifeng.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(buffer.toString());
        bw.close();
        fw.close();


//      byte[] b1 = new byte[20];
//      int len1;
//      while((len1 = is1.read(b1))!= -1){
//          fos.write(b1, 0, len1);
//      }
//      fos.close();
//      is1.close();
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值