2016-04-07 99 views
2

我想從streetinsider.com上打印一些數據(class =「news_article」的div)。我創建了一個帳戶,我需要登錄才能訪問這些數據。需要使用Jsoup登錄的Java廢料網站

任何人都可以解釋爲什麼這段代碼不工作嗎?我嘗試了很多,但沒有任何工作。

public static final String SPLIT_INTERNET_URL = "http://www.streetinsider.com/Special+Dividends?offset=55"; 
public static final String SPLIT_LOGIN = "https://www.streetinsider.com/login.php"; 

/** 
* @param args the command line arguments 
* @throws java.io.FileNotFoundException 
* @throws java.io.UnsupportedEncodingException 
* @throws java.text.ParseException 
* @throws java.lang.ClassNotFoundException 
*/ 
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException, IOException, ParseException, ClassNotFoundException { 
    // TODO code application logic here 
    Response res = Jsoup.connect(SPLIT_LOGIN) 
      .data("loginemail", "XXXXX", "password", "XXXX") 
      .method(Method.POST) 
      .execute(); 
    Document doc = res.parse(); 

    Map<String, String> cookies = res.cookies(); 

    Document pageWhenAlreadyLoggedIn = Jsoup.connect(SPLIT_INTERNET_URL).cookies(cookies).get(); 
    Elements elems = pageWhenAlreadyLoggedIn.select("div[class=news_article]"); 
    for (Element elem : elems) { 
     System.out.println(elem); 
    } 
} 
+0

相當肯定,是假定HTTP基本身份驗證,這也不是什麼網站需要。你將不得不獲得會話令牌並欺騙會話。 –

回答

2

您的代碼不會登錄您的網站....請嘗試以下代碼登錄到網站。

要登錄網站:

Connection.Response res = Jsoup.connect(SPLIT_LOGIN) 
      .data("action", "account", 
       "redirect", "account_home.php?", 
       "radiobutton", "old", 
       "loginemail", "XXXXX", 
       "password", "XXXXX", 
       "LoginChoice", "Sign In to Secure Area") 
      .method(Connection.Method.POST) 
      .followRedirects(true) 
      .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36") 
      .execute(); 

所以你現在登錄,但該網站似乎是檢測是否在其他瀏覽器或連接,您先終止連接請求登錄。所以,下面是用於終止連接的代碼:

Connection.Response res2 = Jsoup.connect("http://www.streetinsider.com/login_duplicate.php") 
      .data("ok", "End Prior Session") 
      .method(Connection.Method.POST) 
      .cookies(res.cookies()) 
      .followRedirects(true) 
      .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36") 
      .execute(); 

都好,現在res2將包含您的帳戶的主頁,進而你就可以去任何你想要的頁面。有關如何登錄到一個網站,Jsoup更多信息,看看下面的教程:

How to login to a website with Jsoup

+0

Omg非常感謝你@Joel Min它正在工作,我明白了爲什麼! 這正是我所尋找的,你救了我的一天! – zardlemalefique

+0

不用擔心兄弟,很高興幫助:) –

+0

等不及要幫助像你這樣的人做了。祝你有個美好的一天爵士:) – zardlemalefique