2016-04-07 7 views
2

Я бы хотел напечатать данные (div с class = "news_article") с сайта streetinsider.com. Я создал учетную запись, и мне нужно войти в систему, чтобы получить доступ к этим данным.Веб-сайт с записью с использованием логина с использованием Jsoup

Может кто-нибудь объяснить мне, почему этот код не работает? Я много пробовал, но ничего не работает.

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 BASIC AUTH, который не то, что веб-сайт требует. Вам нужно будет получить токен сеанса и обмануть сеанс. –

ответ

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