Java - Как я могу получить доступ к потомку Div с помощью JSoup - PullRequest
0 голосов
/ 23 января 2019

В приведенном ниже примере я пытаюсь получить доступ к каждому div.searchRcrd, дочерним элементам «content-area», но я теряюсь в том, как я к ним обращаюсь. Я сделал быструю программу, пытаясь осветить мою проблему, используя операторы печати, чтобы показать, что она не имеет доступа к правильной информации. Я попытался изменить свой doc.select на другие варианты, такие как ("div.content-area div.searchRcrd"), но безрезультатно.

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

public class Main 
{
    // retrieve page source code
    Document doc = Jsoup.connect("https://uk.webuy.com/search/?categoryIds=1040&view=list&inStock=1").get();

    // find all of the div rows in content-area
    org.jsoup.select.Elements rows = doc.select("div.content-area div");
    ListIterator<Element> itr = rows.listIterator();

    // loop over each row
    while (itr.hasNext()) 
    {
        Element row = itr.next();
        System.out.println("Test"); //Prints out 5 times instead of the multiple I expect

    }
}

enter image description here

1 Ответ

0 голосов
/ 23 января 2019

Чтобы увидеть причину, вам нужно напечатать целую HTML страницу JSOUP.Вы заметите, что страница выглядит по-разному в веб-браузере и что видит JSOUP.Похоже, вам нужно как-то включить JavaScript, и он загрузит страницу правильно, используя Ajax запросов.

Пожалуйста, посмотрите на ссылку ниже

  1. Содержимое страницы загружается с помощью JavaScript, а Jsoup его не видит

Редактировать: Но есть и лучшее решение.Вы можете заметить, что данные загружаются в отдельный звонок.Например, браузер делает один дополнительный вызов, чтобы показать предоставленную вами страницу:

https://wss2.cex.uk.webuy.io/v3/boxes?inStock=1&categoryIds=[1040]&firstRecord=1&count=50&sortBy=relevance&sortOrder=desc

Попробуйте загрузить ее и использовать библиотеку Jackson для ее анализа.

...