IP地址唯一标识了Internet上的计算机,而URL则标识了这些计算机上的资源。类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
为了方便程序员编程,JDK中提供了URL类,该类的全名是java.net.URL,有了这样一个类,就可以使用它的各种方法来对URL对象进行分割、合并等处理。
URL类的使用:
import java.net.MalformedURLException; import java.net.URL; public class Test5 { public static void main(String[] args) throws MalformedURLException { URL u = new URL("http://www.google.cn:80/webhp#aa?canhu=33"); System.out.println("获取与此url关联的协议的默认端口:" + u.getDefaultPort()); System.out.println("getFile:" + u.getFile()); // 端口号后面的内容 System.out.println("主机名:" + u.getHost()); // www.google.cn System.out.println("路径:" + u.getPath()); // 端口号后,参数前的内容 // 如果www.google.cn:80则返回80.否则返回-1 System.out.println("端口:" + u.getPort()); System.out.println("协议:" + u.getProtocol()); System.out.println("参数部分:" + u.getQuery()); System.out.println("锚点:" + u.getRef()); URL u1 = new URL("http://www.abc.com/aa/"); URL u2 = new URL(u, "2.html"); // 相对路径构建url对象 System.out.println(u2.toString()); // http://www.abc.com/aa/2.html } }
最简单的网络爬虫:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; public class Test6 { public static void main(String[] args) { basicSpider(); } //网络爬虫 static void basicSpider() { URL url = null; InputStream is = null; BufferedReader br = null; StringBuilder sb = new StringBuilder(); String temp = ""; try { url = new URL("http://www.baidu.com"); is = url.openStream(); br = new BufferedReader(new InputStreamReader(is)); /* * 这样就可以将网络内容下载到本地机器。 * 然后进行数据分析,建立索引。这也是搜索引擎的第一步。 */ while ((temp = br.readLine()) != null) { sb.append(temp); } System.out.println(sb); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } }