Анализатор HTTP: очистка одностраничного приложения: много GET, как узнать, когда страница заканчивается - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь разобрать этот сайт:

https://www.monster.com/jobs/search/?q=java&where=usa&stpage=1

По сути, это не сложно: это одностраничное приложение, вы задаете ему ключевые слова, нажимаете кнопку поиска, а затем отображаются результаты - он начинается с отображения только около 29 результатов. При прокрутке вниз загружаются новые результаты.

Перед загрузкой новых результатов он отправляет запрос GET на

https://www.monster.com/jobs/search/pagination/?q=java&where=usa&isDynamicPage=true&isMKPagination=true&page=2&total=26

, что приводит к ответу JSON, который представляет собой список задания и выглядит примерно так:

{"Title":"Java Developer","TitleLink":"https://job-openings.monster.com/java-developer-orlando-fl-us-summit-technologies/215193478","DatePostedText":"6 days ago","DatePosted":"2020-01-18T12:00","LocationText":"Orlando, FL, 32801","JobViewUrl":"https://job-openings.monster.com/java-developer-orlando-fl-us-summit-technologies/215193478","ImpressionTracking":"data-m_impr_uuid=\"a7320356-70db-46ca-908e-e540f0e74cec\" data-m_impr_a_placement_id=\"JSR2CW\" data-m_impr_s_t=\"t\" data-m_impr_j_p=\"27\" data-m_impr_j_jpm=\"1\" data-m_impr_j_lat=\"28.5418\" data-m_impr_j_long=\"-81.3736\" data-m_impr_j_jawsid=\"418397617\" data-m_impr_j_postingid=\"b55f4409-3858-483a-a2e9-65e254ec1cd2\" data-m_impr_j_jobid=\"215193478\" data-m_impr_j_cid=\"660\" data-m_impr_j_occid=\"11970\" data-m_impr_j_lid=\"385\" data-m_impr_j_jpt=\"1\" data-m_impr_j_pvc=\"monster\" data-m_impr_j_coc=\"xsummittechx\" ","Company":{"Name":"Summit Technologies","HasCompanyAddress":true,"LogoLink":""},"Text":"Java Developer","ApplyType":"ApplyOnline","IsAggregated":"false","JobViewUrlMeta":"https://job-openings.monster.com/java-developer-orlando-fl-us-summit-technologies/215193478","MusangKingId":"215193478","CompanyLogoUrl":"","PrivateBoardIconImageUrl":"","FitIcon":"","FitIconType":""}

enter image description here

, а другой запрос POST отправляется на

https://ib.adnxs.com/ut/v3

(v3 запрос):

enter image description here

, где значение 14162549 из tag_id: 14162549 кажется взятым из вышеуказанного запроса GET.

Таким образом, когда вы прокручиваете страницу вниз, она отправляет 1 запрос GET и 1 запрос POST, пока этого не происходит - прокрутка заканчивается, и запросы также:

enter image description here

Я не понимаю, как он определяет, когда остановиться.

Я хочу очистить эти задания, и я могу сделать что-то вроде отправки GET на

https://www.monster.com/jobs/search/pagination/?q=java&where=usa&isDynamicPage=true&isMKPagination=true&page=N

но я не знаю, когда остановиться, потому что, если, скажем, он останавливает прокрутку, когда &page=12, если я отправлю запрос на &page=13, он не вернет пустое JSON, напротив, он покажет какой-то другой джо bs (может быть менее актуально и поэтому не видно при прокрутке вниз).

Я использую okHttp для отправки запросов, например:

HttpUrl.Builder urlBuilder = HttpUrl.parse(getUrl()).newBuilder();
urlBuilder.addQueryParameter("page", "1");
String url = urlBuilder.build().toString();

Request request = new Request.Builder()
        .url(url)
        .addHeader("Content-Type", "application/json; charset=utf-8")
        .addHeader("Accept-Language", Locale.US.getLanguage())
        .build();

OkHttpClient client = new OkHttpClient();
Call call = client.newCall(request);
Response response = call.execute();
String responseBody = response.body().string();
System.out.println(responseBody);

Gson gson = new Gson();
List<MonsterJobJson> resultMonster = gson.fromJson(
        responseBody, new TypeToken<List<MonsterJobJson>>() {
        }.getType());

1 Ответ

1 голос
/ 25 января 2020

Недостаточно репутации, чтобы просто комментировать.

Вы можете посмотреть на div.mux-search-results. Кажется, у него есть некоторые атрибуты, которые описывают, как загрузить больше результатов, и общее количество результатов, отображаемых на странице, и общее количество. Некоторые атрибуты, которые казались связанными, перечислены ниже:

...