Создание веб-краулера — это умный способ извлечения полезной информации, доступной в сети. С помощью веб-краулера вы можете сканировать Интернет, просматривать отдельные веб-сайты, а также анализировать и извлекать их содержимое.
Язык программирования Java предоставляет простой способ создания веб-краулера и сбора данных с веб-сайтов. Вы можете использовать извлеченные данные для различных вариантов использования, например, для аналитических целей, предоставления услуги, которая использует сторонние данные, или для генерации статистических данных.
В этой статье мы расскажем вам о процессе создания веб-сканера с использованием Java и Crawlbase.
Что вам понадобится
Обычно сканирование веб-данных включает создание скрипта, который отправляет запрос на целевую веб-страницу, обращается к ее базовому HTML-коду и извлекает необходимую информацию.
Для достижения этой цели вам понадобится следующее:
- Среда разработки Java 11
- Crawlbase
Прежде чем разрабатывать логику сканирования, давайте проясним, почему использование Crawlbase важен для веб-сканирования.
Зачем использовать Crawlbase для ползания
Crawlbase — это мощный инструмент для сканирования и извлечения данных, который можно использовать для быстрого и простого сбора информации с веб-сайтов.
Вот несколько причин, по которым вам следует использовать его для сканирования онлайн-данных:
Простота Он поставляется с простым API, который вы можете быстро настроить без каких-либо препятствий в программировании. Всего с несколькими строками кода вы можете начать использовать API для сканирования веб-сайтов и извлечения их контента.
Поддерживает расширенное сканирование Crawlbase позволяет вам выполнять расширенное веб-сканирование и извлекать данные из сложных веб-сайтов. Поскольку он поддерживает рендеринг JavaScript, Crawlbase позволяет извлекать данные из динамических веб-сайтов. Он предлагает headless-браузер, который позволяет извлекать то, что реальные пользователи видят в своих веб-браузерах, даже если сайт создан с использованием современных фреймворков, таких как Angular или React.js.
Обход препятствий при ползании Crawlbase Может справиться со всеми ограничениями, часто связанными со сканированием онлайн-данных. Сервис располагает обширной сетью прокси-серверов и более чем 17 центрами обработки данных по всему миру. С его помощью можно обходить ограничения доступа, обходить CAPTCHA и другие меры защиты от парсинга, применяемые веб-приложениями. Более того, вы можете сканировать веб-сайты, сохраняя анонимность; вам не нужно беспокоиться о раскрытии вашей личности.
Бесплатная пробная учетная запись Вы можете проверить, как Crawlbase работает без предоставления платежных данных. Бесплатная учетная запись включает 1,000 кредитов для тестирования возможностей инструмента.
Как Crawlbase Работы
Crawlbase обеспечивает Crawling API для сканирования и извлечения данных с веб-сайтов. Вы можете легко интегрировать API в свой Java-разработка легко проецировать и извлекать информацию с веб-страниц.
Каждый запрос, сделанный в Crawling API начинается со следующей базовой части:
1 | https://api.crawlbase.com |
Также вам необходимо добавить в API следующие обязательные параметры:
- Токен аутентификации
- URL
Токен аутентификации — это уникальный токен, который разрешает вам использовать Crawling API. После того, как вы зарегистрируете учетную запись, Crawlbase выдаст вам два типа токенов:
- Обычный токен Это необходимо для выполнения общих запросов на сканирование.
- JavaScript-токен Это для сканирования динамических веб-сайтов. Он предоставляет вам возможности headless-браузера для сканирования веб-страниц, отрисованных с помощью JavaScript. Как указывалось ранее, это полезный способ сканирования сложных веб-сайтов.
Вот как добавить токен аутентификации в ваш запрос API:
1 | https://api.crawlbase.com/?token=INSERT_TOKEN |
Вторым обязательным параметром является URL для сканирования. Он должен начинаться с HTTP или HTTPS и быть полностью закодированным. Кодирование преобразует строку URL в формат, который может быть передан через Интернет корректно и легко.
Вот как вставить URL в ваш запрос API:
1 | https://api.crawlbase.com/?token=INSERT_TOKEN&url=INSERT_URL |
Если вы запустите указанную выше строку, например, на своем терминале с помощью cURL или вставите ее в адресную строку браузера, она выполнит запрос API и вернет весь исходный HTML-код целевой веб-страницы.
Это так легко и просто!
Если вы хотите выполнить расширенное сканирование, вы можете добавить другие параметры к API-запросу. Например, при использовании токена JavaScript можно добавить страница_ожидание параметр, указывающий браузеру ждать указанное количество миллисекунд перед захватом результирующего HTML-кода.
Вот пример:
1 | https://api.crawlbase.com/?token=INSERT_TOKEN&page_wait=1000&url=INSERT_URL |
Создание сети Crawler на Яве и Crawlbase
В этом руководстве по веб-сканированию на Java мы будем использовать API HttpClient для создания логики сканирования. API был представлен в Java 11, и он поставляется с множеством полезных функций для отправки запросов и получения их ответов.

API HttpClient поддерживает как HTTP/1.1, так и HTTP/2. По умолчанию он использует протокол HTTP/2 для отправки запросов. Если запрос отправляется на сервер, который еще не поддерживает HTTP/2, он будет автоматически понижен до HTTP/1.
Более того, его запросы могут быть отправлены асинхронно или синхронно, он обрабатывает запросы и тела ответов как реактивные-потокии использует шаблон общего конструктора.
API состоит из трех основных классов:
- HttpRequest
- HttpClient
- HttpResponse
Поговорим о каждом из них более подробно.
1. HttpRequest
HttpRequest, как следует из названия, является объектом, инкапсулирующим HTTP-запрос, который должен быть отправлен. Чтобы создать новые экземпляры HttpRequest, вызовите HttpRequest.newBuilder(). После создания запрос становится неизменным и может быть отправлен несколько раз.
Команда строитель класс поставляется с различными методами для настройки запроса.
Вот наиболее распространённые методы:
- Метод URI
- Метод запроса
- Метод версии протокола
- Метод тайм-аута
Поговорим о каждом из них более подробно.
а) Метод URI
Первое, что нужно сделать при настройке запроса, это задать URL для сканирования. Мы можем сделать это, вызвав uri() метод на строитель пример. Мы также будем использовать URI.создать() метод создания URI путем анализа строки URL, которую мы собираемся сканировать.
Вот код:
1 | строка URL = |
Обратите внимание, что мы предоставили строку URL с помощью Crawlbaseнастройки. Это веб-страницу, содержимое которой мы намерены извлечь.
Мы также закодировали URL с помощью Класс Java URLEncoder. Как уже упоминалось ранее, Crawlbase требует кодирования URL-адресов.
б) Метод запроса
Следующее, что нужно сделать, это указать HTTP-метод, который будет использоваться для выполнения запроса. Мы можем вызвать любой из следующих методов из строитель:
- ПОЛУЧАТЬ()
- ПОЧТА()
- ПОМЕЩАТЬ()
- УДАЛИТЬ()
В этом случае, поскольку мы хотим запросить данные с целевой веб-страницы, мы будем использовать ПОЛУЧАТЬ() метод.
Вот код:
1 | HttpRequest запросить = HttpRequest.newBuilder() |
Пока что HttpRequest имеет все параметры, которые должны быть переданы HttpClient. Однако вам может потребоваться включить другие параметры, такие как версия протокола HTTP и тайм-аут.
Давайте посмотрим, как можно добавить дополнительные параметры.
в) Метод версии протокола
Как упоминалось ранее, API HttpClient по умолчанию использует протокол HTTP/2. Тем не менее, вы можете указать версию протокола HTTP, которую хотите использовать.
Вот код:
1 | HttpRequest запросить = HttpRequest.newBuilder() |
г) Метод тайм-аута
Вы можете установить время ожидания ответа. После того, как определенный период истекает, HttpTimeoutException будет выброшено. По умолчанию таймаут установлен на бесконечность.
Вы можете определить таймаут, вызвав метод timeout() на экземпляре строителя. Вам также нужно будет передать Длительность объект для указания времени ожидания.
Вот код:
1 | HttpRequest запросить = HttpRequest.newBuilder() |
2. HttpКлиент
Класс HttpClient является основной точкой входа API — он действует как контейнер для деталей конфигурации, общих для нескольких запросов. Это HTTP-клиент, используемый для отправки запросов и получения ответов.
Вы можете позвонить либо HttpClient.newBuilder() или HttpClient.newHttpClient() метод для его создания. После создания экземпляра HttpClient он становится неизменяемым.
Класс HttpClient предлагает несколько полезных и самоописываемых методов, которые можно использовать при работе с запросами и ответами.
Вот некоторые вещи, которые вы можете сделать:
- Установить версию протокола
- Установить политику перенаправления
- Отправлять синхронные и асинхронные запросы
Поговорим о каждом из них более подробно.
а) Установить версию протокола
Как упоминалось ранее, класс HttpClient по умолчанию использует протокол HTTP/2. Однако вы можете установить предпочтительную версию протокола: HTTP/1.1 или HTTP/2.
Вот пример:
1 | HttpClient клиент = HttpClient.newBuilder() |
б) Установить политику перенаправления
Если целевая веб-страница переместилась на другой адрес, вы получите код статуса HTTP 3xx. Поскольку адрес нового URI обычно предоставляется с информацией о коде статуса, настройка правильной политики перенаправления может заставить HttpClient автоматически пересылать запрос на новое место.
Вы можете установить его с помощью followRedirects() метод на строитель пример.
Вот пример:
1 | HttpClient клиент = HttpClient.newBuilder() |
в) Отправлять синхронные и асинхронные запросы
HttpClient поддерживает два способа отправки запросов:
- Синхронно с помощью Отправить() Метод. Это блокирует клиента до тех пор, пока не будет получен ответ, прежде чем продолжить выполнение оставшейся части.
Вот пример:
1 | HttpОтвет ответ = клиент.отправить(запрос, |
Обратите внимание, что мы использовали BodyHandlers и позвонил ofString() метод для возврата HTML-ответа в виде строки.
- Асинхронно с помощью sendAsync() Метод. Он не ждет получения ответа; он неблокируемый. После того, как sendAsync() вызывается метод, он мгновенно возвращается с CompletableFuture< HttpResponse >, который завершается после получения ответа. Возвращенный CompletableБудущее могут быть объединены с использованием различных методов для определения зависимостей между различными асинхронными задачами.
Вот пример:
1 | CompletableБудущее > ответ = HttpClient.newBuilder() |
3. HTTP-ответ
HttpResponse, как следует из названия, представляет собой ответ, полученный после отправки HttpRequest. HttpResponse предлагает различные полезные методы для обработки полученного ответа.
Вот наиболее важные методы:
- statusCode() Этот метод возвращает код статуса ответа. Он имеет Int напишите
- Тело() Этот метод возвращает тело ответа. Тип возвращаемого значения зависит от типа ответа. BodyHandler параметр, который передается в Отправить() метод.
Вот пример:
1 | // Обработка тела ответа как строки |
1 | // Обработка тела ответа как файла |
Синхронный пример
Вот пример, который использует синхронный метод HttpClient для сканирования веб-страницы и вывода ее содержимого:
1 | пакет javaHttpClient; |
Вот вывод (для краткости он усечен):

Асинхронный пример
При использовании асинхронного метода HttpClient для сканирования веб-страницы sendAsync() метод вызывается вместо отправлять().
Вот пример:
1 | пакет javaHttpClient; |
Заключение
Вот как создать веб-сканер на Java. API HttpClient, представленный в Java 11, упрощает отправку и обработку ответов с сервера.
А если API объединить с таким универсальным инструментом, как Crawlbase, он может сделать задачи веб-сканирования простыми и полезными.
Благодаря более чем Crawlbase, вы можете создать скрапер, который поможет вам извлекать информацию с веб-сайтов анонимно и не беспокоясь о блокировке.
Это инструмент, который вам нужен, чтобы вывести свои усилия по сканированию на новый уровень.
Нажмите здесь, чтобы создать бесплатно Crawlbase счет.
Удачного соскабливания!











