неполная очищенная HTML-страница OkHttp3, нужен javascript? - PullRequest
0 голосов
/ 12 сентября 2018

Я собираю некоторые данные JSON с веб-сайта, который работает довольно хорошо.Я могу войти и загрузить необходимые данные.Однако в одном случае мне нужно загрузить страницу HTML для извлечения информации из HTML.

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

Request request = new Request.Builder().url(url)
                    .header("Host", "www.host.com")
                    .header("Connection", "Keep-Alive")
                    .header("Cache-Control", "max-age=0")
                    .header("Upgrade-Insecure-Requests", "1")
                    .header("User-Agent",this.user_agent_user_for_this_session)
                    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
                    .header("Accept-Encoding", "gzip, deflate, br")
                    .header("Accept-Language", "en-US,en;q=0.9,fr;q=0.8,nl;q=0.7,de;q=0.6,af;q=0.5")
                    .get().build();

            Response response = client.newCall(request).execute();

            String html = IOUtils.toString(new GZIPInputStream(response.body().byteStream()));

Я получаю HTML-файл, но он намного меньше по сравнению с HTML-файлом, который сохраняется вручную из Chrome (сохранить источник как).Я заметил все виды ng (угловых) ссылок в файле HTML, что заставило меня задуматься, получил ли я только первую часть определенного процесса javascript, который не был завершен?

Кроме того, загруженный HTML-код выглядит идентично HTML-файлу, который загружается в первом сетевом представлении Chrome (я копирую вставленный контент, и размеры файлов совпадают).

Так должен ли я провести дополнительный анализ запроса?

1 Ответ

0 голосов
/ 12 сентября 2018

Если это угловая страница, то вам не повезло - вся страница генерируется во время выполнения, поэтому фактический index.html немного мал.

В качестве обходного пути я использовал Selenium для фактического открытия страницы в браузере без заголовка и извлечения контента после инициализации углового приложения (он же DOM построен).

...