веб-сканирование

веб-сканирование существует почти с самого начала Интернета. за эти годы появилось так много различных технологий, и люди никогда не перестают гоняться за контентом.

Недавно я хотел сделать быстрый побочный проект, который будет включать в себя некоторую очистку продукта, сделал некоторые раскопки и просто хочу поделиться некоторыми прерывистыми открытиями.

Библиотека сканера

для Java я пробовал Jsoup и htmlunit, оба очень мощные и могут многое. извлечение веб-страниц и анализ содержимого, у меня не было времени на тестирование производительности, но, похоже, и то, и другое довольно хорошо. но в настоящее время почти на всех страницах есть javascript, и многие из них используют javascript для асинхронной выборки содержимого, запуска мониторинга или других вещей, затрудняющих сканирование. Чтобы решить эту проблему, я обнаружил, что htmlunit имеет способ настроить webClient для отображения javascript и ожидания загрузки полной страницы, прежде чем искать содержимое. вот краткий фрагмент этого:

WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setJavaScriptEnabled(true);
HtmlPage page = webClient.getPage(START_URL);
webClient.waitForBackgroundJavaScript(3000);

первые 2 варианта позволяют убедиться, что у нас включен javascript, и не происходит сбой кода, если в js есть ошибки.

теперь давайте попробуем это на одной из веб-страниц Amazon, чтобы увидеть, сможем ли мы правильно определить цену:

String title = page.getElementById("productTitle").getTextContent().trim();
String price = page.getElementById("priceblock_ourprice").getTextContent().trim();

Ола: вот результат с этой страницы:

https://www.amazon.com/EleTab-Dual-Monitor-Mount-Stand/dp/B07K9PMK7F/

Title: EleTab Dual Monitor Mount Stand - Height Adjustable Monitor Arm Stand Fully Articulating Counterbalance Gas Spring Desk Mount Fits for 2 Computer Screens 17 to 32 inches
Price: $94.99

хорошо, вот и все, короткое чтение, просто для удовольствия и комментарии приветствуются!