Соскребание экрана Java с помощью JTidy - анализ значений HTML

Итак, что я пытаюсь сделать, это очистить веб-страницу IMDB для данных из веб-серий. Проблема в том, что когда я конвертирую страницу в объект DOM и пытаюсь получить значения, это не так просто, как кажется.

Например: я использую getElementsByTagName("h1") -> он возвращает 1 значение, поэтому я знаю, какое значение я могу получить (в данном случае имя шоу). Но когда я хочу извлечь рейтинг шоу, он погружается в Div и его очень трудно найти. Поэтому я пытаюсь использовать getElementById(идентификатор элемента), чтобы получить элемент (div) этого идентификатора, чтобы я мог сократить поиск.

Но он возвращает нулевое значение? Какой самый простой способ очистить такую ​​страницу?

Вот фрагмент кода public final class IMDBExtractor {private String imdbId;

public IMDBExtractor(String imdbId) {
    this.imdbId = imdbId;
}

public synchronized TvShow extractTvShow() throws IOException {
    TvShow show = new TvShow();

    //access imdb url
    URL url  = new URL("http://www.imdb.com/title/" + imdbId);
    URLConnection uc = url.openConnection();
    uc.addRequestProperty("User-Agent",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
    uc.connect();

    //Tidy up HTML
    Tidy tidy = new Tidy();
    tidy.setXmlOut(true);
    tidy.setShowWarnings(false);
    Document doc = tidy.parseDOM(uc.getInputStream(), null);
    //Set show attributes
     show.setImdbId(imdbId);
     show.setTitle(extractSeriesName(doc));
     show.setRating(extractRating(doc));
    return show;
}

private String extractSeriesName(Document doc) throws IOException {
  return doc.getElementsByTagName("h1").item(0).getChildNodes().item(0).getNodeValue();
}

private Double extractRating(Document doc) throws IOException {
    System.out.println(doc.getElementById("content-2-wide").getNodeName());
    return null;
}

}

Страница, которую я пытаюсь поцарапать в этом случае: Стрелка

Все страницы IMDB имеют одинаковый макет, так что это не проблема, вы, ребята, знаете легкий путь?

0 ответов

Другие вопросы по тегам