Я написал довольно большую HTML-библиотеку для поиска и поиска.Есть много сайтов, которые делают трюки, о которых я не знаю точно после двух лет.Я перебираю иностранные новостные сайты и перевожу их.Например, Google переводчик точно знает, когда веб-браузер Google Chrome отправляет запрос, а когда мой программный пакет Java отправляет запрос.
Я несколько раз менял пользовательский агент, но покаЭто ряд веб-серверов, которые не всегда предоставляют тот же HTML-ответ Java-программе, что и браузер.Я подозреваю, что у веб-браузеров могут быть неопубликованные рукопожатия, но я могу ошибаться.Говорят, что код Google Chrome Browser - это проект с «открытым исходным кодом», но я пока не пытался его прочитать.Может быть, вы могли бы попробовать!:)
Я знаю, однако, что кнопка «Просмотреть исходный код» (внутри графического интерфейса браузера) довольно часто отображает другой HTML-код для пользователя Google Chrome, чем для Java-программы - даже когдаПараметр «АГЕНТ-ПОЛЬЗОВАТЕЛЬ» настроен на некоторые варианты «Google Chrome».
http://developer.torello.directory/JavaHTML/index.html
ТАКЖЕ: Помните!Подавляющее большинство веб-сайтов используют, по крайней мере, НЕКОТОРЫЕ JAVASCRIPT.
Когда используется JavaScript - если выполняется какой-либо AJAX / JSON (обратный вызов на сервер) - (надеюсь, это очевидно!), ТОлюбой выполняемый Java-скрипт, если он изменяет HTML в веб-браузере, эти изменения не будут отражены или отображены в простой или «наивной» версии «HTML Scrape»
Inкод, который вы разместили, например, любой Java-скрипт, который находится на фактической странице, которую вы видите в вашем браузере, вообще не выполняется.Язык Java не включает ни в одну из своих «Стандартных библиотек» файл JAR для выполнения Java-Script.Я читал, что кое-что из этого возможно с помощью Selenium Web Driver, но я никогда не использовал Selenium.
В качестве отступления я написал это быстрое исследование, используя мою библиотеку JAR по приведенной выше ссылке .... Дадействительно, сохраненный очищенный HTML-код отличается от HTML-кода, который я сохранил с помощью «Просмотреть исходный код» ... Да, две версии отличаются.Строка кода, которая устанавливает «пользовательский агент»:
public static String USER_AGENT = "Chrome / 61.0.3163.100";
Вот мой код HTML Scrape:
import Torello.HTML.*;
import Torello.HTML.NodeSearch.*;
import Torello.Java.*;
import java.io.*;
import java.net.*;
import java.util.*;
public class SO
{
public static void main(String[] argv) throws IOException
{
URL url = new URL("https://www.kayak.fr/flights/TLS-ATH/2019-10-04/2019-10-07?sort=price_a");
Vector<HTMLNode> page = HTMLPage.getPageTokens(url, false);
StringBuffer sb = new StringBuffer();
for (HTMLNode n : page) sb.append(n.str);
FileRW.writeFile(sb, "out.html");
}
}
Файл: SO.java
Просмотр исходного кода страницы: VPS.html
Scraped (используя вышеупомянутый Java-класс) HTML: out.html
Где размер файла (количество текста, возвращаемого вариантом / средством «загрузки через Интернет»):
Просмотр страницы Кнопка Chrome: VPS.html 2,51 МБ text / html
Очистка URL-адреса Java: out.html 91,46 КБ text / html (гораздо меньше возвращаемых данных!)
Итак, использование двух разных способов или средств извлечения данных HTML с этого конкретного веб-серверапохоже, возвращают два разных набора HTML ...
СНОВА, ПРИМЕЧАНИЕ: на вашей странице есть тонна Java-Script, и (опять же, надеюсь, это "очевидно")Ни один из этого JavaScript не является exeвырезан.И ... ДА ... Это java-скрипт AJAX, что означает, что он выполняет вызовы и отправляет запросы на сервер для получения дополнительных данных.
ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ: Если вы можете выбрать через Java-ScriptAJAX звонит, вы можете отправлять запросы непосредственно на этот сайт. ОДНАКО, если это действительно «Веб-сайт рейса авиакомпании» - я мог бы отметить, что это тип скрапа, который я на самом деле не делаю сам. Я не связываюсь сданные рейса авиакомпании вообще.Я просто перевожу иностранные новостные сайты.(кажется «рискованным»)