JsoupはIteye自動登録を実現します.

2517 ワード

本来はJsoupがどのようにしてウェブページを読み込むフォームを見つけるために自動的に記入して提出するのですが、httpclientは無理なようです.Jsoupに変えてもいけないようです.ここはJsoupが静的なウェブサイトを実現して自動的にフォームを提出するコードです.
package gddx;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

/**
 * @author Jason.F
 * Date 2016 5 20 
 * **/

public class IteyeLogin {
	private String loginURL ="http://www.iteye.com/login";
	
	private void login(){  
		//     
		Connection conFirst=Jsoup.connect(loginURL);
		//       
		conFirst.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
		Response rs=null;
		try {
			rs = conFirst.execute();
		} catch (IOException e2) {
				// TODO Auto-generated catch block
				e2.printStackTrace();
			}//    
		Document d1=Jsoup.parse(rs.body());//   Dom 
		List<Element> et= d1.select("#login_form");//  form  ,              
		//  ,cooking     ,  map  post     
		Map<String, String> datas=new HashMap<>();
		for(Element e:et.get(0).getAllElements()){
			System.out.println(e.text());
			if(e.attr("name").equals("name"))
		         e.attr("value", "fjssharpsword");//     
		    if(e.attr("name").equals("password"))
		         e.attr("value","xyz"); //      
		    if(e.attr("name").length()>0)//        
		    	datas.put(e.attr("name"), e.attr("value"));  
		}  
		/**
		 * *      ,post    ,  cookie  
		 **/
		Connection conSecond=Jsoup.connect(loginURL);
		conSecond.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
		//  cookie post   map  
		Response rsLogin=null;
		try {
			rsLogin = conSecond.ignoreContentType(true).method(Method.POST).data(datas).cookies(rs.cookies()).execute();
		} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		//     html,     
		System.out.println(rsLogin.body());
		
		//      cookie  ,       ,     ,        
		Map<String, String> map=rsLogin.cookies();
		for(String s:map.keySet())
			System.out.println(s+"      "+map.get(s));
	}
	
	public static void main(String[] args) {
		IteyeLogin lession = new IteyeLogin();
		lession.login();
	}
}