LINUX.ORG.RU

Как программно выбрать пункт в html теге <select>

 ,


0

1

В общем, сразу к делу. Есть html страница, есть на ней пункт выбора группы, сделанный через тег <select>, и ниже есть <div>, который изначально пустой, но после выбора группы этот див заполняется таблицей с расписанием. Посмотрел какой запрос отправляется (POST) и решил попробовать отправлять такой же запрос сам. Запрос выглядит как обычный хедер + в теле group=%группа%. К сожалению мне приходит все тот же html с пустым <div>, в котором должно быть расписание. Собственно, как мне выставить значение и прочитать уже обновленную html-страницу?

Из HTML

<select class="group select2-hidden-accessible" tabindex="-1" aria-hidden="true" style="">
<option>%Группа-11%</option>
<option>%Группа-12%</option>
....
</select>
<div class="schedule"></div><!--Вот тут появляется таблица -->

Как изменяется страница при выборе группы

<select class="group select2-hidden-accessible" tabindex="-1" aria-hidden="true" style="">
<option>%Группа-11%</option>
<option>%Группа-12%</option>
....
</select>

<div class="schedule">
    <table> <!-- Оп, таблица подъехала -->
    ....
    ....
    </table>
</div>

Мой запрос (Java)

HttpClient client = HttpClient.newBuilder()
                    .followRedirects(HttpClient.Redirect.NORMAL)
                    .build();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("%Сайт с расписанием%"))
                    .headers("Content-Type", "application/x-www-form-urlencoded") // Тут сделал как в хедере в запросе
                    .POST(HttpRequest.BodyPublishers.ofString(group))
                    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.headers());
System.out.println(response.body());
System.out.println(response.request());

Как программно выбрать пункт в html теге <select>

</select>
  <option>%Группа-11%</option>
  <option selected>%Группа-12%</option>
  ...
</select>
vvn_black ★★★★★
()

Вангую, что на странице есть скрипт, в котором захардкожено расписание, а группу он из URL берет. Ну либо там еще один запрос идёт, а ты не тот посылаешь.

Deleted
()
Ответ на: комментарий от vvn_black

Боюсь что такой способ не прокатит. Я же пытаюсь получить данные со стороны и изменить html на сервере у меня не получится.

snake266 ★★
() автор топика
Ответ на: комментарий от snake266

Угу, я понял уже. Если ты POST запрос перехватил, то там всё должно быть понятно.

vvn_black ★★★★★
()
Ответ на: комментарий от snake266

group же у меня уже определена. Кстати, вот такой вот вопрос: группа состоит из русских букв и двух цифр, в запросе лучше вставлять русские буквы или оставлять такой вид %D0%9F%D0%98%D0%9D?

snake266 ★★
() автор топика

Посмотри в браузере какие запросы на сервер уходят. Ты что-то не так посылаешь.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Вот запрос от браузера

POST /schedule/data HTTP/1.1
Host: foo.ru
Connection: keep-alive
Content-Length: 27
Accept: */*
Origin: https://foo.ru
X-Requested-With: XMLHttpRequest
Save-Data: on
User-Agent: %...%
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://foo.ru/schedule
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie:%... %

group=%D0%9F%D0%98%D0%9D-11

snake266 ★★
() автор топика
Ответ на: комментарий от snake266

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

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.