java网络编程 connection refused:connect_Java网络编程_URL

d801eb839dd5194a313b4acc0df6f64e.gif

IP地址唯一标识了Internet上的计算机,而URL标识了这些计算机上的资源。类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

为了方便程序员编程,JDK中提供了URL类,该类的全名是java.net.URL,有了这样一个类,就可以使用它的各种方法来对URL对象进行分割、合并等处理。

统一资源定位符由 4 部分组成:协议存放资源的主机域名端口号资源文件名

https://www.baidu.com:80/index.html#aa?username=bjsxt&pwd=bjsxt

协议:http

域名:http://www.baidu.com

端口号:80

资源文件名:index.html

锚点:aa

参数:username=root&pwd=root

1、URl 类常用的方法

3e2f9804c0dcaba5ac20f1f4e1f227a9.png

2、URL 类的使用

import java.net.MalformedURLException;
import java.net.URL;
public class TestURL {
	public static void main(String[] args) throws MalformedURLException {
		URL url = new URL("https://www.baidu.com:80/index.html#aa
                                      ?username=bjsxt&pwd=bjsxt");
		System.out.println("协议:" + url.getProtocol());
		System.out.println("主机名:" + url.getHost());
		//如果没有设置端口号则返回-1
		System.out.println("端口号:" + url.getPort());
		System.out.println("getFile():" + url.getFile());
		System.out.println("获取与此url关联的协议的默认端口:" 
                                      + url.getDefaultPort());
		System.out.println("路径:" + url.getPath());
		System.out.println("参数部分:" + url.getQuery());
		System.out.println("锚点:" + url.getRef());
		
		URL u1 = new URL("http://www.abc.com/aa/");
           URL u2 = new URL(u1, "2.html"); // 相对路径构建url对象
           System.out.println(u2.toString());
	}
}

运行结果:

dd6134cf06d9f21d92b71f141fabdcf0.png

3、最简单的网络爬虫

public class TestURL2 {
	public static void main(String[] args) {
		crawler();
	}
	/**
	 * 网络爬虫:
	 * 从网络上获取资源 www.baidu.com
	 * 储存到本地
	 */
	public static void crawler() {
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			//(1)创建URL对象
			URL url = new URL("https://www.baidu.com");
			//(2)获取字节输入流
			InputStream is = url.openStream();
			//(3)缓冲流---将字节流转换为字符流进行包装
			br = new BufferedReader(new InputStreamReader(is, 
                            "utf-8"));
			//(4)存储到本地
			bw = new BufferedWriter(new OutputStreamWriter(new 
                           FileOutputStream("baidu.html"), "utf-8"));
			//(5)边读边写
			String line = null;
                   /* 
                    * 这样就可以将网络内容下载到本地机器。
                    * 然后进行数据分析,建立索引。这也是搜索引擎的第一步。
                    */
			while((line = br.readLine()) != null) {
				bw.write(line);
				bw.newLine();
				bw.flush();
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			//(6)关闭流
			try {
				if(bw != null)
					bw.close();
				if(br != null)
					br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}	
	}
}

尚学堂百战程序员

百战程序员_IT6000集_影响6000万学习IT的中国人【官网】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值