* URL:IP定位计算机,端口定位计算机里的软件,那么URL是定位软件里的资源。
* URL是属于URI的分类,下面还有URN:
* URI:统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。
* URL:统一资源定位符,一种定位资源的主要访问机制的字符串,一个
* 标准的URL必须包含:协议、存放资源的主机域名、端口号(默认80)、资源文件名
* (参数、锚点),加上后面两个就是完整的,
* 比如:http://www.google.com:80/index.html。
* URN:统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。
*超链接与锚点:锚点:同一个网站或同一个页面的跳转,可以直接定位;
* 超链接:同一个网站或不同的网站都可以,是跳转。
*网络三大基石:html、http、url。
*URL类:统一资源定位器
获取基本信息:
URL url = new URL("http://www.google.com:80/index.html?name=oyh#a");
System.out.println("协议"+url.getProtocol());
System.out.println("域名"+url.getHost());
System.out.println("端口"+url.getPort());
System.out.println("请求资源1"+url.getFile());
System.out.println("请求资源2"+url.getPath());
System.out.println("参数"+url.getQuery());
System.out.println("锚点"+url.getRef());
结果:
协议http
域名www.google.com
端口80
请求资源1/index.html?name=oyh
请求资源2/index.html
参数name=oyh
锚点a
下载资源:
/*
网络爬虫
1.得到一个URL
2.下载资源,这个不是哪个网站都会让你下载的,一个不安全,再则服务器压力大
3.分析数据,用到正则表达式,因为数据都是有规律的
4.处理数据:清洗、存等
*/
URL jd = new URL("http://www.jd.com");
InputStream is = jd.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String msg = null;
while(null !=(msg =br.readLine())){
System.out.println(msg);//内容都在,可以存在文件里,控制台只输出一部分
}
br.close();
但不是所有网站都会给你下载资源的,比如下面这个:
URL jd = new URL("http://www.dianping.com");
执行:
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL
报错了,那么我们可以模拟浏览器来骗过网站,
/*
这个地址按照上面的方式去下载会报403错误,因为被拒绝了,可以模拟浏览器。
// */
URL url1 = new URL("http://www.dianping.com");
HttpURLConnection conn = (HttpURLConnection )url1.openConnection();
conn.setRequestMethod("GET");
//下面括号里的是HTTP请求协议
conn.setRequestProperty("User-Agent"," Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String msg = null;
while(null !=(msg =br.readLine())){
System.out.println(msg);//内容都在,可以存在文件里,控制台只输出一部分
}
br.close();
结果:只截取一部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="sogou_site_verification" content="qxQgbwO3cZ"/>
<meta name="shenma-site-verification" content="688cc4e286b23880eb0eaec7476aecbe_1492066611"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<title>广州美食_生活_团购_旅游_电影_优惠券 - 大众点评网</title>
<script>
var _start = +new Date();
</script>
<meta name="keyword" content="广州点评, 广州团购, 广州美食, 广州优惠券, 广州生活服务, 广州餐厅, 广州电影票" />
<meta name="description" content="推荐 广州吃喝玩乐优惠信息,提供美食餐厅、酒店旅游、电影票、家居装修、美容美发、运动健身等各类生活服务,通过海量真实消费评论的聚合,帮您选到满意商家。" />
<!--网页标题左侧显示-->
<link rel="icon" type="image/x-icon" href="//www.dpfile.com/app/pc-common/dp_favicon.a4af753914321c8e82e402e2b4be01d7.ico">
<!--收藏夹显示图标-->
<link rel="shortcut icon" type="image/x-icon" href="//www.dpfile.com/app/pc-common/dp_favicon.a4af753914321c8e82e402e2b4be01d7.ico" >
<link rel="stylesheet" type="text/css" href="//www.dpfile.com/app/pc-common/index.min.30301999a81455aaf8a16973b3b13888.css">
上面解决403错误的代码里的HTTP协议,我们可以打开任意一个网站,按F12调试,然后随意点击网站一下,调试窗口会出来信息,就在Request Headers下面。