Полное руководство по парсингу с Java

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

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

Что такое Java

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

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

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

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

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

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

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

  • Java11– Существуют более продвинутые версии, но эта остается самой популярной среди разработчиков.
  • Maven – Инструмент автоматизации построения для управления зависимостями и т.п.
  • IntelliJ IDEA – Представляет собой IDE для разработки компьютерного ПО, написанного на 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 для веб-скрапинга может оказаться трудоемкой задачей. Поэтому многие компании решили полностью автоматизировать операции по сбору данных. Используя инструмент Web Scraper IDE, любой сотрудник фирмы может собирать необходимые данные без кода. Все что нужно сделать, это выбрать целевой сайт и набор данных, а затем желаемую «частоту сбора», «формат» и «метод доставки».

More from Bright Data

Datasets Icon
Get immediately structured data
Easily access structured public web data for any use case. The datasets can be downloaded or delivered in a variety of formats. Get updated or new records from your preferred dataset based on a pre-defined schedule.
Web scraper IDE Icon
Build the scraper
Build scrapers in a cloud environment with code templates and functions that speed up the development. The solution is based on Bright Data’s Web Unlocker and proxy infrastructure making it easy to scale and never get blocked.
Web Unlocker Icon
Implement an automated unlocking solution
Boost the unblocking process with fingerprint management, CAPTCHA-solving, and IP rotation. Any scraper, written in any language, can integrate it via a regular proxy interface.

Ready to get started?