基于java对网页的请求、实体和响应解析(一)

一,请求头的设置
① 初始化一个header对象 :
Map headers = new HashMap();
② 向headers中添加请求头中的键值对:

headers.put("Accept", "*/*,q=1"); //可接受的响应内容类型及权重
headers.put("Accept-Encoding", "gzip, deflate"); //可接受的响应内容的编码方式
headers.put("Accept-Language", "zh-cn,zh;q=0.5,en-US");  //可接受的响应内容语言列表
headers.put("Cache-Control", "no-cache");  //用来指定当前的请求/回复中的,是否使用缓存机制。
headers.put("Connection", "keep-alive"); //客户端(浏览器)想要优先使用的连接类型
headers.put("Content-Type", "*/*"); //具体请求中的媒体类型信息
headers.put("Upgrade-Insecure-Requests", "1");
headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"); //浏览器的身份标识字符串
headers.put("Cookie","key=value;key1=value1;"); //身份验证
headers.put("Referer", "www.baidu.com"); //告诉服务器网页是从哪里链接过来的

q——在所有参数中代表权重:“x;q=1"中,q越大x被选择的优先级越高(q默认为1)
(1)Accept:*/* —— *为通配符,”*/*"表示为匹配所有该格式的类型
(2)Cache-Control:参数为"no-cache"时,表示禁用缓存,每次向刷新页面时都需要再次向服务器发出请求
(3)Connection(默认为keep-alive):HTTP请求发送之前,需要先建立TCP连接,只有TCP连接建立,才可以发送HTTP请求。若是设置为close,则每个请求都要建立一次tcp连接。
(4)Upgrade-Insecure-Requests:该指令用于让浏览器自动升级请求从http到https,用于大量包含http资源的http网页直接升级到https而不会报错.简洁的来讲,就相当于在http和https之间起的一个过渡作用。
(5)User-Agent:用于向服务器表明自己是浏览器(一般大多数网页不允许被python爬取,手动设置该参数后就可以绕开该检查)
(6)Referer:防盗链接,防止恶意请求。若允许直接通过url访问改地址,Referer可为空
二.Jsoup解析HTML页面
这里有一篇写的不错的博客
jsoup最厉害的地方在于
①和jquery一样对按class ,id 等对document进行查询并且进行筛选
②jquery返回的是jquery对象或者jquery对象数组,Jsoup可以返回element对象或element数组(即 elements 对象),例如:

elements el = doc.select(".form-control"); // 返回多个element
element el = doc.select(".form-control").first(); // 返回一个element

③对于筛选完的结果还可继续进行筛选

element el = doc.select("div[id=test]"); // 返回一个id = test 的div 的元素 | id属于全局变量,故document中只能有一个 
elements ell = el.select("tr"); //对选择出的div筛选出所有的tr元素

但是对于自定义的标签,查询就有可能失败

你可能感兴趣的:(http,html,java,http)