2015-07-26 3 views
1

Мой код ничего не возвращает, когда я просматриваю элементы на веб-сайте. Я успешно сканировал таблицы на этом веб-сайте ранее. Однако я не могу извлечь код из этих «динамических таблиц» на fantasy.premierleague.com.Нахождение сложного извлечения данных из таблицы (JSoup)

http://i.imgur.com/cHkFwHE.png < Фотографии, которые я пытаюсь извлечь.

Кроме того, мои данные для входа в систему законно отображаются в коде, поэтому вы, ребята, можете войти с помощью моих учетных данных и сами убедиться, что происходит. (obv - запасной демо-счет).

public class StatsCollector { 

public static void main (String [] args){ 


    try { 

     String url = "https://users.premierleague.com/PremierUser/j_spring_security_check"; 

      Response res = Jsoup 
        .connect(url) 
        .followRedirects(false) 
        .timeout(2_000) 
        .data("j_username", "<[email protected]>") 
        .data("j_password", "<fantasy123>") 
        .method(Method.POST) 
        .execute(); 

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


     String url1 = "http://fantasy.premierleague.com/stats/elements/?page=1" ; 

      Document doc = Jsoup.connect 
        (url1) 
        .cookies(loginCookies) 
        .get(); 

      for (Element table: doc.select("table.ismEiwMatchesPast")) { 
       for (Element tbody: table.select("tbody.ismHistoryPastSeasons")) { 
        for (Element row: table.select("tr")){ 
         Elements tds = row.select("td"); 
         if (tds.size()>2){ 
          System.out.println(tds.get(0).text() + " : " + tds.get(1).text() + " : " + tds.get(2).text()); 
          } 
         } 
       } 
      } 



    } 

    catch (IOException ex) { 
     Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE,null,ex); 
    } 





} 

}

+0

Я не вошел в систему как вы, но мне кажется, что эти таблицы, вероятно, генерируются динамически через AJAX. Вероятно, вам следует попытаться извлечь данные этого вызова AJAX (обычно JSON или XML-данные), а не HTML, который генерируется javascript. – durron597

+0

@hisham mohammed, прежде чем вы попытаетесь получить jtable, сначала попробуйте подключиться к странице. Попробуйте 'res', чтобы увидеть, что такое ответ. –

ответ

0

Содержание создается динамически, вы можете также использовать selenium, чтобы «получить», чтобы добраться до требуемой части данных, то вы будете в состоянии разобрать его (с помощью Jsoup или что-то еще).

+0

Я вижу. Да, это то, что я думал. Раньше я никогда не использовал селен. Вы могли бы связать меня с хорошим учебником? –

+0

Ну, я на самом деле использую [Geb] (http://www.gebish.org/), который является мощным инструментом автоматизации браузера. [Книга Геба] (http://www.gebish.org/manual/current/) - отличный способ начать, но вам нужно быть в хорошем (и некотором jquery). – aperfectpoint

+0

Спасибо. Я думаю, что сейчас я буду придерживаться обучения селену, так как Геб кажется, что мне будет лучше познакомиться. (я только новичок). –

Смежные вопросы