Как использовать Java для веб-скрапинга, чтобы разблокировать критически важные точки данных

Не знаете, какие загрузить дополнительные инструменты для создания идеальной Java-среды для сбора данных? Не понимаете, как извлечь/разобрать точки данных из HTML, а затем преобразовать их в формат CSV? Данное руководство поможет разобраться.
Nadav Roiter - Bright Data content manager and writer
Nadav Roiter | Data Collection Expert
14-Aug-2022

В этой статье мы обсудим:

Что такое Java

Java — это язык программирования с открытым исходным кодом, который был разработан под девизом «напиши один раз, запусти где угодно». Это означает, что пока программа поддерживает Java, скрипты не нужно будет переписывать. Это полезный язык для программистов, привыкших к C и C++, поскольку синтаксис Java очень похож.

К основным преимуществам использования Java относятся:

  • Это очень популярная программа, поэтому существует большое онлайн-сообщество, которое может помочь вам в поддержке и устранении неполадок. Кроме того, есть обширная документация, что облегчает использование.
  • Java обладает динамическими возможностями, особенно когда речь идет о «модификации кода времени выполнения»
  • Он имеет открытый исходный код, поэтому совместим с различными платформами. Это позволяет использовать различные API (интерфейс прикладного программирования).

Хотите вручную установить Java на свой компьютер с Windows? Переходите на официальную страницу загрузки руководства .

Веб-скрапинг с помощью Java

Некоторые люди предпочитают использовать Selenium для парсинга или сбора данных с помощью Beautiful Soup. Однако другим популярным вариантом является использование Java для парсинга веб-страниц. Представляем пошаговое руководство – как это сделать.

Перед стартом убедитесь, что на вашем компьютере настроены следующие параметры для оптимального веб-скрапинга:

  • Java11 — существуют более продвинутые версии, но она остается самой популярной среди разработчиков.
  • Maven — это инструмент автоматизации сборки для управления зависимостями и т.д.
  •  IntelliJ IDEA — это интегрированная среда разработки для разработки компьютерного ПО на языке Java.
  • HtmlUnit — это симулятор активности браузера (например, симулятор отправки формы).

Вы можете проверить установку с помощью этих команд:

  •    ‘java -version’
  •    ‘mvn -v’

Шаг №1: Изучение целевой страницы

Перейдите на целевой сайт, с которого хотите собрать данные, щелкните правой кнопкой мыши в любом месте и нажмите «Проверить код», чтобы открыть «Консоль разработчика», предоставляющую доступ к HTML сайта.

Шаг №2: Парсинг HTML

Откройте IntelliJ IDEA и создайте проект Maven:

Проекты Maven имеют файл pom.xml. Перейдите к файлу pom.xml и установите версию JDK для вашего проекта:

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>11</maven.compiler.source>
		<maven.compiler.target>11</maven.compiler.target>
	</properties>

Затем, поскольку мы будем использовать htmlunit, добавьте “htmlunit” в файл pom.xml:

<dependencies>
		<dependency>
			<groupId>net.sourceforge.htmlunit</groupId>
			<artifactId>htmlunit</artifactId>
			<version>2.63.0</version>
		</dependency>
	</dependencies>

Теперь можно приступить к написанию первого класса Java. Создайте новый исходный файл Java:

Нам нужно создать главный метод для запуска приложения. Сделайте его следующим образом:

   public static void main(String[] args) throws IOException {
   }

Приложение будет запускаться с помощью этого метода. Он является точкой входа приложения. Теперь можете отправить HTTP-запрос, используя импорт HtmlUnit:

   import com.gargoylesoftware.htmlunit.*;
   import com.gargoylesoftware.htmlunit.html.*;
   import java.io.IOException;
   import java.util.List;

Now create a WebClient by setting the options as follows:

	private static WebClient createWebClient() {
		WebClient webClient = new WebClient(BrowserVersion.CHROME);
		webClient.getOptions().setThrowExceptionOnScriptError(false);
		webClient.getOptions().setCssEnabled(false);
	           webClient.getOptions().setJavaScriptEnabled(false);
		return webClient;
	}

Шаг №3: Извлечение/анализ данных из HTML

Теперь давайте извлечем интересующие нас данные о целевой цене. Для этого будем использовать встроенные команды HtmlUnit. Вот как это будет выглядеть для точек данных, относящихся к «цене продукта»:

		WebClient webClient = createWebClient();
	    
		try {
			String link = "https://www.ebay.com/itm/332852436920?epid=108867251&hash=item4d7f8d1fb8:g:cvYAAOSwOIlb0NGY";
			HtmlPage page = webClient.getPage(link);
			
			System.out.println(page.getTitleText());
			
			String xpath = "//*[@id=\"mm-saleDscPrc\"]";			
			HtmlSpan priceDiv = (HtmlSpan) page.getByXPath(xpath).get(0);			
			System.out.println(priceDiv.asNormalizedText());
			
			CsvWriter.writeCsvFile(link, priceDiv.asNormalizedText());
			
		} catch (FailingHttpStatusCodeException | IOException e) {
			e.printStackTrace();
		} finally {
			webClient.close();
		}	

Чтобы получить XPath нужного элемента, воспользуйтесь консолью разработчика. В ней щелкните правой кнопкой мыши на выбранный раздел и выберите «Копировать XPath». Эта команда скопирует выбранный раздел в виде выражения XPath:

Веб-страницы содержат ссылки, текст, графику и таблицы. Если вы выберете XPath таблицы, то сможете экспортировать ее в CSV и выполнять дальнейшие расчеты и анализ с помощью Microsoft Excel. В следующем шаге рассмотрим экспорт таблицы в виде файла CSV.

Шаг №4: Экспорт данных

Теперь, когда данные проанализированы, можно экспортировать их в формат CSV для дальнейшего анализа. Этот формат может быть предпочтительнее для некоторых профессионалов, поскольку его можно легко открыть/просмотреть в Microsoft Excel. Ниже приведены командные строки для выполнения этой задачи:

	public static void writeCsvFile(String link, String price) throws IOException {
		
		FileWriter recipesFile = new FileWriter("export.csv", true);

		recipesFile.write("link, price\n");

		recipesFile.write(link + ", " + price);

		recipesFile.close();
	}

Подведем итоги

Java может быть эффективным способом получения доступа к целевым данным, которые нужны бизнесу, для программистов, специалистов по данным и групп экспертов. Однако использование Java для веб-скрапинга может оказаться трудоемкой задачей. Поэтому многие компании решили полностью автоматизировать операции по сбору данных. Используя инструмент Data Collector, любой сотрудник фирмы может собирать необходимые данные без кода. Все что нужно сделать, это выбрать целевой сайт и набор данных, а затем желаемую «частоту сбора», «формат» и «метод доставки».

Nadav Roiter - Bright Data content manager and writer
Nadav Roiter | Data Collection Expert

Nadav Roiter is a data collection expert at Bright Data. Formerly the Marketing Manager at Subivi eCommerce CRM and Head of Digital Content at Novarize audience intelligence, he now dedicates his time to bringing businesses closer to their goals through the collection of big data.

Вас также может заинтересовать

ISP proxies Vs. Residential Proxies Understanding the difference once and for all

ISP прокси & Резидентные прокси: в чем разница

Эта статья создана специально для тех, кто задается вопросами: «Какая прокси-сеть лучше для увеличения одновременных запросов?», «Как сравнить затраты на сеть?», «Какими преимуществами обладает каждый тип сети?».

Серверные прокси & Резидентные прокси: подробное сравнение

«Насколько быстро работают IP?»; «Насколько эффективны в обходе блокировок целевых сайтов?»; «Насколько уникальны IP-адреса?»; «Сколько доступно локаций?»; « Сколько стоят прокси?» – в статье вы найдете ответы на эти вопросы и не только
Browser Automation What it is and how your business can use it to hit a hole in one_'

Автоматизация браузера: что это такое и как ваш бизнес может ее использовать

Узнайте, как ваша компания может упростить тестирование производительности, проверку ссылок и сбор веб-данных с помощью «автоматизации браузера».
What is a proxy server & how does it work?

Что такое прокси-сервер и как он работает?

Эта статья охватывает все самое важное про прокси-серверы: особенности работы, актуальные типы, отличия от VPN. Изучите информацию, чтобы выбрать лучший инструмент для вашего бизнеса.