Java学习-URL和爬虫原理

URL基本知识

URI:统一资源标识符,用来唯一的标识一个资源
URL:统一资源定位器,它是一种具体的URI
四部分组成:协议+存放资源的主机名+端口+资源文件名

URL

  • 常用构造方法:
    • URL(String spec) 根据 String 表示形式创建 URL 对象。
    • URL(URL context,String spec) 通过在指定的上下文中对给定的 spec 进行解析创建 URL。
  • 常用方法:
    • String getProtocol() 获取此 URL 的协议名称
    • String getHost() 获取此 URL的主机名
    • String getFile() 获取此 URL 的文件名
    • String getPath() 获取此 URL 的路径部分
    • String getRef() 获取此URL 的锚点(也称为“引用”)
    • String getQuery() 获取此 URL 的查询部分——获取参数
    • InputStream openStream() 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
package com.anqi.UDL;
import java.net.MalformedURLException;
import java.net.URL;

/*
    URI:统一资源标识符,用来唯一的标识一个资源
    URL:统一资源定位器,它是一种具体的URI
    四部分组成:协议+存放资源的主机名+端口+资源文件名

    URL
    常用构造方法:
        URL(String spec)  根据 String 表示形式创建 URL 对象。
        URL(URL context, String spec) 通过在指定的上下文中对给定的 spec 进行解析创建 URL。
    常用方法:
        String getProtocol()  获取此 URL 的协议名称
        String getHost()   获取此 URL 的主机名
        int getPort()  获取此 URL 的端口号 
        String getFile()  获取此 URL 的文件名  
        String getPath() 获取此 URL 的路径部分
        String getRef() 获取此 URL 的锚点(也称为“引用”)
        String getQuery()  获取此 URL 的查询部分------获取参数 
        InputStream openStream() 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。 
 * */
public class URLDemo1 {

    public static void main(String[] args) throws MalformedURLException {
            URL url = new URL("http://www.baidu.com:80/index.html#aa?uname=anqi");//绝对路径构建
//          "http://www.baidu.com:80/index.html?uname=anqi"则没有锚点
//          以下为相对路径构建
//          url = new URL("http://www,baidu.com/a/");
//          url = new URL(url,"index.html");
//          System.out.println(url);
            System.out.println(url.getProtocol());//获取协议
            System.out.println(url.getHost());//获取主机名
            System.out.println(url.getPort());//获取端口
            System.out.println(url.getRef());//获取锚点
            System.out.println(url.getQuery());//获取参数 存在锚点返回null  不存在返回参数
            System.out.println(url.getFile());//获取文件名
            System.out.println(url.getPath());//获取文件路径
            System.out.println();
    }

}

URL爬虫原理

package com.anqi.UDL;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;

/*
 *  爬虫原理
 * 
 * 
 * 
 * */
public class URLDemo2 {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.baidu.com");//访问主页 也就是默认文件资源
        InputStream in = url.openStream();
//     读入字节数组中,发现是乱码,因为人家是utf-8
//      byte[] b = new byte[1024];
//      int num;
//      while ((num=in.read(b)) != -1){
//          System.out.println(new String(b,0,num));
//      }
        BufferedReader bf = new BufferedReader(new InputStreamReader(in,"utf-8"));
        String str =null;
//     读取到控制台,注意修改编码        
//      while((str = bf.readLine()) != null){
//          System.out.println(str);
//      }
//      bf.close();

//     读取到当前目录下,注意utf-8
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("baidu.html"),"utf-8"));
        while((str = bf.readLine()) != null){
            bw.write(str);
            bw.newLine();
        }
        bw.close();
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值