• Как зайти во внутреннию сылку сайта и парсить от туда данные?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    public class readAllLinks {
    Названия классов должны начинаться с заглавной буквы. Прочитайте про name convention

    Что касается вашего кода, то есть много нюансов.
    мне нужно взять карточки товара сайта (цена, фотографии,описание и тд) чтобы забрать все карточки товара я должен подключиться к сайту (я сделал)

    Вы просто открыли главную страницу сайта и выбрали ВСЕ ссылки (тег а).
    Elements links = doc.select("a");

    Теперь вопрос как мне переходить по всем ссылкам сайта и забирать только информацию товара?

    Я бы сделал следующим образом. Вместо того, чтобы собирать все ссылки, я бы собрал ссылки на разделы (категории).

    5f7f96bf48139905711369.png
    Вот, селектор
    #categories .sub-menu-item .sub-menu-link
    Далее собираете их в какой-нибудь List

    Далее итерируете по этому списку и переходите по ссылке, также как и здесь
    doc = Jsoup.connect(url).userAgent("Mozilla").get();

    вместо url будет ссылка из листа спарсенная из меню (картинка выше)

    Страница каталога товаров имеет пагинацию.
    Например, https://al-style.kz/catalog/mobilnye_telefony/
    5f7f97fc965ae322761133.png

    Смотрим, как работает пагинация
    https://al-style.kz/catalog/mobilnye_telefony/
    https://al-style.kz/catalog/mobilnye_telefony/?PAGEN_1=2
    ?PAGEN_1={pageNum}

    По факту к урл добавляется query param, который инкрементируется, а значит после того, как мы перешли на страницу категории, мы для каждой категории добавляем этот параметр и инкрементируем его значение до тех пор, пока страницы не закончатся. В зависимости от сайта можно по-разному проверять есть ли страница или нет.
    Например, проверить просматривется ли или существует ли тот или иной блок.

    Далее на каждой странице находим блоки (карточки товара).
    Вот, селектор:
    .elements .element
    5f7f99505660f300295427.png

    Находим селектор ссылки и сохраняем тоже в отдельный List
    .elements .element .link
    После того, как постранично прошлись по категории и собрали список всех ссылок карточек товара итерируем по этому списку и также открываем эти ссылки.

    Т.е. страницу самого товара - например, https://al-style.kz/catalog/mobilnye_telefony/mobi...

    Ну а дальше остается собрать данные при помощи в селекторов, сохранить в pojo (например, Product ) и экспортировать куда-нибудь.

    Для экспорта в xlsx можно использовать Apache POI
    Ответ написан
    2 комментария