Когда я анализировал с помощью jsoup, содержимое тега исчезло

#java #jsoup

#java #jsoup

Вопрос:

Я изучаю библиотеку jsoup. И он столкнулся с трудностями. Тег, отображаемый в инструменте разработчика Chrome, исчезает при анализе. Помогите мне.

введите описание изображения здесь

введите описание изображения здесь

Содержимое тега div с идентификатором cbox_module отсутствует. Подскажите, как получить содержимое этого тега.

и это мой код

 public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    String url = "https://comic.naver.com/webtoon/detail.nhn?titleId=597447amp;no=364amp;weekday=sat";
    String address = "https://comic.naver.com/comment/comment.nhn?titleId=651673amp;no=514";
    
    Document doc = Jsoup.connect(address).get();
    Elements el = doc.select("#cbox_module");
    
    System.out.println(doc);
    System.out.println(el);
}
  

Прошу прощения, если мой английский был плохим. Я иностранец, и я использую переводчик.

Комментарии:

1. Какой необработанный HTML-код вы анализируете?

2. Я попытался проанализировать HTML этого адреса и получить комментарии. comic.naver.com/webtoon /…

3. укажите URL-адрес, а также проверьте некоторые другие ответы под [jsoup] тегом, поскольку я недавно ответил многим с некоторым описанием того, как я это делаю… вкладка сеть полезна для просмотра содержимого данного http-запроса. Также можете ли вы предоставить код, с которым вы пытаетесь это сделать до сих пор?

4. спасибо за обновление — теперь будет легче взглянуть

Ответ №1:

Не совсем уверен, что вы хотите извлечь здесь, но вы берете тот cbox_module , который является самым первым элементом после <body> тегов.

Просматривая вкладку сеть в chrome tools, я вижу запрос на:

 https://apis.naver.com/commentBox/cbox/web_naver_list_jsonp.json?ticket=comicamp;templateId=webtoonamp;pool=cbox3amp;_callback=jQuery112408278558406808354_1605604312744amp;lang=koamp;country=KRamp;objectId=651673_514amp;categoryId=amp;pageSize=15amp;indexSize=10amp;groupId=amp;listType=OBJECTamp;pageType=defaultamp;page=1amp;initialize=trueamp;userType=amp;useAltSort=trueamp;replyPageSize=10amp;_=1605604312745
  

Это возвращает Json, который заполняет комментарии на странице, что дает вам более прямой доступ к данным, которые вы, вероятно, хотите.

Большинство параметров запроса содержатся в полученном исходном HTML-ответе, однако один, в частности, нет… _callback=jQuery112408278558406808354_1605604312744

1605604312744 — это временная метка unix, которую достаточно легко получить с помощью int now = Integer.parseInt(String.valueOf(LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)));

jQuery112408278558406808354 — было сложно понять, как это вычисляется, но из сценариев:

 ...
 n.extend({
        expando: "jQuery"   (m   Math.random()).replace(/D/g, ""),
...
  

.replace(/D/g, "") — удалите все не цифры — значит, случайное число.

m находится "1.12.4" в верхней части скрипта (возможно, используемая версия jQuery)… таким образом, мы получаем случайное число, добавленное к 1124 0.9999999... (некоторому случайному значению) (удалите . , поскольку оно не является цифрой), и мы получаем случайное _callback значение параметра (16 знаков после запятой).

Это происходит из: https://comic.naver.com/aggregate/javascript/release/comic_comment_20201113103349.js

Я пытался с этим, но это не сработало. Так что я немного озадачен тем, как это работает. Я увидел .Где-то в нижнем регистре, и когда я делаю это с параметрами URL query, я получаю ошибку «партнер не распознан» … что-то явно не совсем правильно.

Я бы попробовал, HtmlUnit поскольку он поддерживает Javascript — это может сделать это намного проще.