Jsoupがアナログ登録を実現しました。

5408 ワード

以前は爬虫類と書いていたpythonですが、会社のパソコンにはpythonの環境がないので、仕方なくjava版を勉強しました。そこで、使いやすい道具を見つけました。個人的にはpythonのbeautiful soupと似ています。目標はウェブサイトの模擬登録を実現するので、ネット上で1つのとても良い板を発見して、特にここは記録して学びます。
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 Test {

    public static void main(String[] args) throws IOException {
        Connection con = Jsoup.connect("xxxxxxxx");
        Response rs = con.execute();
        System.out.println(rs.cookies());
        Document d1 = Jsoup.parse(rs.body());
        List et = d1.select("form");
        Map datas = new HashMap<>();
        for (Element e : et.get(0).getAllElements()) {
            if (e.attr("name").equals("username")) {
                e.attr("value", "xxxxxxxxx");//      
            }
            if (e.attr("name").equals("password")) {
                e.attr("value", "xxxxxxxxxxx"); //       
            }
            if (e.attr("name").length() > 0) {//         
                datas.put(e.attr("name"), e.attr("value"));
            }
        }
        Connection con2 = Jsoup.connect("xxxxxxxxx");
        Response login = con2.ignoreContentType(true).method(Method.POST).data(datas).cookies(rs.cookies()).execute();
        //System.out.println(login.body());
        Map map = login.cookies();
        /*for (String s : map.keySet()) {
            System.out.println(s + "      " + map.get(s));
        }*/
    }
}