文档章节

jsoup简单应用

 非想非非想
发布于 2016/11/04 16:20
字数 448
阅读 17
收藏 0

注:本文仅仅属于个人记录文档。

一、需要引入jsoup的jar包

二、login.java的代码

说明:  trustEveryone()方法完全引用自该链接:http://espace.iteye.com/blog/1917574

package com.jsoup;


import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;

import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class login {
	//解决https访问的信任证书
	public static void trustEveryone() {  
        try {  
            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {  
                public boolean verify(String hostname, SSLSession session) {  
                    return true;  
                }  
            });  
  
            SSLContext context = SSLContext.getInstance("TLS");  
            context.init(null, new X509TrustManager[] { new X509TrustManager() {  
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {  
                }  
  
                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {  
                }  
  
                public X509Certificate[] getAcceptedIssuers() {  
                    return new X509Certificate[0];  
                }  
            } }, new SecureRandom());  
            HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());  
        } catch (Exception e) {  
            // e.printStackTrace();  
        }  
    }  
	public static void main(String[] args) throws Exception {
		trustEveryone();
		Connection con = Jsoup.connect("https://localhost/exam/login");
		//con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
		Response rs = con.execute();
		Document doc = Jsoup.parse(rs.body());
		//System.out.println(rs.url());
		//System.out.println(doc.body());
		List<Element> et = doc.select("#login_form");
		Map<String, String> datas = new HashMap<>();
		for(Element e : et.get(0).getAllElements()){
			if(e.attr("name").equals("username")){
				e.attr("value","zhangsan");
			}
			if(e.attr("name").equals("password")){
				e.attr("value","password");
			}
			if(e.attr("name").length()>0){
				datas.put(e.attr("name"), e.attr("value"));
			}
		}
		
		Connection con2=Jsoup.connect("https://localhost/exam/login");
	    con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
	    rs =  con2.ignoreContentType(true)
	    		.method(Method.POST)
	    		.data(datas)
	    		.cookies(rs.cookies())
	    		.execute();
	    Map<String, String> cook = rs.cookies();
	    /*Document document = Jsoup.connect("https://localhost/exam/...").data(datas).cookies(rs.cookies()).post();
	    System.out.println(document.body());
	   // Map<String, String> map = login.cookies();
	      for(String s:map.keySet()){
	    	System.out.println(s+"     "+ map.get(s));
	    }*/
	    rs = Jsoup.connect("https://localhost/exam/users/")
	    		.ignoreContentType(true)
	    		.method(Method.GET)
	    		.cookies(cook)
	    		.execute();
	    doc = Jsoup.parse(rs.body());
	    System.out.println(doc.select("#username").val());

	    
	    datas = new HashMap<String, String>();
	    datas.put("username", doc.select("#username").val());
	    datas.put("password", doc.select("#password").val());
	    
	    rs = Jsoup.connect("https://localhost/exam/users/")
	    		.ignoreContentType(true)
	    		.method(Method.POST)
	    		.cookies(cook)
	    		.data(datas)
	    		.execute();
	    System.out.println(rs.parse());
	    		
	    
	    	
	    	/*Connection con3=Jsoup.connect("https://localhost/exam/users");
	    con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
	   Response login2 =  con3.ignoreContentType(true)
	    		.method(Method.POST)
	    		.cookies(login.cookies())
	    		.execute();
	   System.out.println(login2.body());*/
	   
	  /* con3=Jsoup.connect("https://localhost/exam/...");
	   Map<String, String> date = new HashMap<>();
	   date.put("questionid", "40");
	   date.put("type", "type03");
	   
	   Response login3 =  con3.ignoreContentType(true)
	    		.method(Method.GET)
	    		.cookies(login.cookies())
	    		//.data(date)
	    		.execute();
	   System.out.println(login3.body());*/
	    /*
		Map<String, String> map = new HashMap<>();
		map.put("username", "username");
		map.put("password", "password");
		Document doc = Jsoup.connect("https://localhost/exam/...").data(map).get();
		System.out.println(doc.body());*/
	}
}

 

© 著作权归作者所有

粉丝 1
博文 43
码字总数 25764
作品 0
西安
私信 提问
OSChina原创:使用 jsoup 对 HTML 文档进行解析和操作

jsoup 简介 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从HTML中攫取你所需的信息 和扩展 HT...

红薯
2010/12/17
17.7K
38
使用 jsoup 对 HTML 文档进行解析和操作

刘 柄成, 站长, 开源中国社区 简介: jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作...

SeanCai
2011/03/02
0
0
jsoup 对 html 文档中链接处理的一个不错的功能

一个 html 文档中经常有很多链接,而这些链接可能包含主机地址,可能不包含,也可能是一个相对的地址,例如 jsoup jsoup jsoup 一般我们从 html 文档中解析出这些链接,最终还要转成第一种形...

红薯
2010/08/04
1K
4
用Jsoup对用户输入内容的HTML安全过滤

在网站使用input或textarea提供给用户可输入内容的功能,比如发帖子,发文章,发评论等等。这时候需要后端程序对输入内容作安全过滤,比如<script>等可造成安全隐患的标签。 java中有个开源包...

凯文加内特
2015/02/28
0
2
Jsoup代码解读之七-实现一个CSS Selector

![street fighter][1] 当当当!终于来到了Jsoup的特色:CSS Selector部分。selector也是我写的爬虫框架webmagic开发的一个重点。附上一张street fighter的图,希望以后webmagic也能挑战Jsoup...

黄亿华
2013/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 程序员做噩梦

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 手嶌葵《Kiss The Girl》 《Kiss The Girl》- 手嶌葵 手机党少年们想听歌,请使劲儿戳(这里) @Sharon啊 :今天...

小小编辑
28分钟前
62
3
Another app is currently holding the yum lock; waiting for it to exit...

Another app is currently holding the yum lock; waiting for it to exit... The other application is: PackageKit Memory : 153 M RSS (266 MB VSZ) Started: Thu Jul 12 00:03......

圣洁之子
36分钟前
0
0
FastDateFormat 研究

FastDateFormat 对缓存的利用,其实就是用ConcurrentHashMap 做了一个map类型的缓存 public F getInstance(final String pattern, TimeZone timeZone, Locale locale) { Validate......

暗中观察
今天
3
0
Android双向绑定原理简述

Android双向绑定原理简述 双向绑定涉及两个部分,即将业务状态的变化传递给UI,以及将用户输入信息传递给业务模型。 首先我们来看业务状态是如何传递给UI的。开启dataBinding后,编译器为布局...

tommwq
今天
4
0
Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部