--- miscJava/SpejdernetScraper/src/dk/thoerup/spejdernetscraper/ScraperWorker.java 2013/08/15 17:17:46 2046 +++ miscJava/SpejdernetScraper/src/dk/thoerup/spejdernetscraper/ScraperWorker.java 2014/04/07 11:06:27 2139 @@ -1,13 +1,13 @@ package dk.thoerup.spejdernetscraper; +import java.util.List; import java.util.Map; import java.util.TreeMap; -import javax.servlet.http.HttpUtils; - -import org.jsoup.Connection.Method; import org.jsoup.Connection.Response; import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.FormElement; import dk.thoerup.genericjavautils.HttpUtil; @@ -15,57 +15,55 @@ @Override public void run() { - long start = System.currentTimeMillis(); + ResultBuffer rb = ResultBuffer.getResultBuffer(); try { rb.clear(); - rb.addString(start, "Starting"); + rb.addString("Starting"); Response res = Jsoup.connect("http://medlemssystem.spejdernet.dk/login.aspx?ReturnUrl=%2f").execute(); Map cookies = res.cookies(); - rb.addString(start, "Got login page"); + Document loginPage = res.parse(); + + rb.addString("Got login page"); + + + + FormElement loginForm = (FormElement) loginPage.getElementById("aspnetForm"); + loginForm.getElementById("ctl00_main_loginForm__txtUserName").attr("value","torbenhoerupnielsen"); + loginForm.getElementById("ctl00_main_loginForm__txtPassword").attr("value","Pwspejder2013"); + System.out.println( loginForm.formData() ); - res = Jsoup - .connect("http://medlemssystem.spejdernet.dk/Login.aspx?changeuser=1") - .data("ctl00$main$loginForm$_txtUserName", "torbenhoerupnielsen", - "ctl00$main$loginForm$_txtPassword", "Pwspejder2013", - "ctl00$main$loginForm$_buttonLogin", "Login", - "__EVENTTARGET", "", - "__EVENTARGUMENT", "", - "__VIEWSTATE", "/wEPDwUJNjg2MjA4NzU2D2QWAmYPZBYCAgMPZBYGAgEPDxYCHgdWaXNpYmxlaGRkAgIPZBYIAgkPDxYCHwBoZGQCDQ8PFgIfAGhkZAIPDw8WAh8AaGRkAhMPDxYCHwBoZGQCAw9kFgICAQ9kFgRmDw8WAh8AaGRkAgYPDxYCHwBoZGRk8Vg6q/CGyZv+RzwBkdn5NiLJnoGAlWgM6iWe62LJuHM=", - "ctl00$ctl04$hiddenTab", "" - ) - .method(Method.POST) - .cookies(cookies) - .execute(); + res = loginForm.submit().execute(); + //System.out.println( res.body() ); //DEBUG - rb.addString(start, "Login OK"); + rb.addString("Login OK"); //This will get you cookies cookies.putAll( res.cookies() ); - //printMap(cookies); - + //printMap(cookies); String dataCsvUrl = "http://medlemssystem.spejdernet.dk/csvx.ashx?q=JQBOZXRtZXN0ZXIuS0ZVTS5NZW1iZXIsIE5ldG1lc3Rlci5LRlVNPgB4LlVuaXQuR3JvdXAuSWQgPT0gImd1aWQ6NWMwY2Y2MzgtZGM4Ny00MTNmLTkxYjYtOWM3MzAwYzcwMTM3Ig==&type=Member&view=csv"; //And this is the easieste way I've found to remain in session Response data = Jsoup.connect(dataCsvUrl).cookies(cookies).timeout(10000).execute(); if ( ! data.contentType().equalsIgnoreCase("text/x-csv; charset=iso-8859-1") ) { - rb.addString(start, "Data.csv - has the wrong content type: " + data.contentType()); + + rb.addString("Data.csv - has the wrong content type: " + data.contentType()); return; } String dataCsv = data.body(); - rb.addString(start, "Got data.csv"); + rb.addString("Got data.csv"); String rollerCsvUrl = "http://medlemssystem.spejdernet.dk/DataExport.aspx?Id=5c0cf638-dc87-413f-91b6-9c7300c70137&listid=e8c5ae9d-5ea7-4a00-bea4-a0ce00ea891e&execute=true"; Response roller = Jsoup.connect(rollerCsvUrl).cookies(cookies).timeout(10000).execute(); if ( ! roller.contentType().equalsIgnoreCase("text/x-csv; charset=iso-8859-1") ) { - rb.addString(start, "Roller.csv - has the wrong content type: " + roller.contentType()); + rb.addString("Roller.csv - has the wrong content type: " + roller.contentType()); return; } String rollerCsv = roller.body(); - rb.addString(start, "Got roller.csv"); + rb.addString("Got roller.csv"); Map postData = new TreeMap(); postData.put("roller", rollerCsv); @@ -75,12 +73,12 @@ byte resp[] = HttpUtil.postContent("http://horsensspejder.t-hoerup.dk/data/postdata.php", params, 3000); String response = new String(resp); - rb.addString(start, "POST Response: " + response); + rb.addString("POST Response: " + response); - rb.addString(start, "Done !"); + rb.addString("Done !"); } catch (Exception e) { - rb.addString(start, "Error occurred: " + e.toString() ); + rb.addString("Error occurred: " + e.toString() ); } } @@ -97,5 +95,22 @@ System.out.println( ResultBuffer.getResultBuffer().getString() ); } + + /* + * + * Just fore reference, here's the old login method + res = Jsoup + .connect("http://medlemssystem.spejdernet.dk/Login.aspx?changeuser=1") + .data("ctl00$main$loginForm$_txtUserName", "", + "ctl00$main$loginForm$_txtPassword", "", + "ctl00$main$loginForm$_buttonLogin", "Login", + "__EVENTTARGET", "", + "__EVENTARGUMENT", "", + "__VIEWSTATE", viewState.attr("value"), + "ctl00$ctl04$hiddenTab", "" + ) + .method(Method.POST) + .cookies(cookies) + .execute();*/ }