2016-03-15 2 views
2

Я пытаюсь очистить данные о рекордных потерях команды с сайта NBA here. Вот изображение строк текста Я хочу, чтобы захватить, он обведен черным цветом:Jsoup не отображает теги, используя функцию select()

enter image description here

Может кто-то попытается выскабливание это точные данные и увидеть, если он работает? Я был у него часами и ничего не работает. Я смог очистить имена команд и начать время, но когда я попытаюсь использовать функцию выбора jsoup в строках записи, я получаю 0 результатов назад. Это как если бы теги были скрыты от иерархии html. Это возможно? Я новичок в этом, и я могу делать что-то неправильно.

Кодекса Я попытался:

Document document = Jsoup.connect("http://espn.go.com/nba/scoreboard/_/date/20160315").get(); 
      games = document.select("section.sb-score"); 

      for(Element game : games) 
      { 
       mHomeTeam = game.select("td.home").select("div.sb-meta").text(); 
       Elements test = game.select("p.record.overall"); 
       mAwayTeam = game.select("td.away").select("div.sb-meta").text(); 
       mHomeTeamRecord = game.select("td.home").select("div.record-container").select("p.record").text(); 
       mAwayTeamRecord = game.select("td.away").select("div.record-container").select("p.record").text(); 
       mGameStartTime = game.select("span.time").text(); 

       Game newGameObj = new Game(mHomeTeam, mAwayTeam, mGameStartTime, mHomeTeamRecord, mAwayTeamRecord); 
       mGameList.add(newGameObj); 
      } 

ответ

1

Записи данные беспроигрышной команды потери загружаются Javascript на странице. Поскольку Jsoup является парсером HTML, поэтому он не отображает теги с помощью метода select().

Однако, кажется, эти данные находятся внутри страницы непосредственно в объекте Javascript под названием window.espn.scoreboardData.

Вот как извлечь эти данные:

Document doc = Jsoup.connect("http://espn.go.com/nba/scoreboard/_/date/20160315").get(); 

for(Element script : doc.select("script")) { 
    String scriptData = script.html(); 
    if (scriptData.contains("window.espn.scoreboardData")) { 
     // Parse scriptData to extract team win-loss record ... 
    } 
} 
+0

Можете ли вы объяснить, как вы знали, что это данные были внутри объекта JavaScript? Я не могу найти 'window.espn.scoreboardData' в любом месте html-кода. Спасибо за вашу помощь! –

+0

@Ghost_Stark Перейдите на страницу http://espn.go.com/nba/scoreboard/_/date/20160315 с вашим браузером. Покажите исходный код и найдите «window.espn.scoreboardData». Он находится в последнем элементе скрипта до ''. – Stephan

+0

Прохладный, наверное, я его не замечал. Но как вы узнали, что эти данные были загружены через объект Javascript? Это то, чего я должен ожидать, когда я анализирую данные и не получаю никаких результатов, даже если html четко отображается в источнике? –

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