Wie Sie Java für das Web Scraping nutzen, um geschäftskritische Datenpunkte freizugeben

Sie wissen nicht, welche unterstützenden Tools Sie herunterladen müssen, um eine ideale Java-Umgebung für die Datenerfassung zu schaffen? Ihnen ist nicht klar, wie man Datenpunkte aus HTML extrahiert/parst und dann ins CSV-Format konvertiert? Dieser Beitrag hilft Ihnen, diese Fragen zu klären.
Nadav Roiter - Bright Data content manager and writer
Nadav Roiter | Data Collection Expert
14-Aug-2022

In diesem Artikel geht es um Folgendes:

Was ist Java?

Java ist eine Open-Source-Programmiersprache, die nach dem Motto „write once, run anywhere“ (einmal schreiben, läuft überall) entwickelt wurde. Das bedeutet, dass Skripte nicht neu geschrieben werden müssen, solange Java von einem Programm unterstützt wird. Dies ist eine besonders nützliche Sprache für Programmierer, die mit C und C++ vertraut sind, da die Syntax von Java sehr ähnlich ist.

Die wichtigsten Vorteile von Java:

  • Es handelt ist ein äußerst beliebtes Programm, was bedeutet, dass es eine große Online-Community gibt, die Sie bei Ihren Bemühungen unterstützen und Probleme beheben kann. Außerdem gibt es eine ausführliche Dokumentation, die die Verwendung sehr erleichtert.
  • Es verfügt über dynamische Fähigkeiten, insbesondere wenn es um die „Änderung des Runtime-Code“ geht, zum Beispiel:
  • Es ist quelloffen, was bedeutet, dass es mit einer Vielzahl von Plattformen kompatibel ist und die Verwendung verschiedener APIs (Application Programming Interface, Anwendungsprogrammierschnittstelle) ermöglicht.

Wenn Sie daran interessiert sind, Java manuell auf Ihrem Windows-Computer zu installieren, besuchen Sie bitte die official manual download page.

Web Scraping mit Java

Während einige Personen es vorziehen Selenium für das Scraping zu verwenden oder Daten mit Beautiful Soup zu sammeln, bevorzugen andere Java für das Web Scraping. Hier finden Sie eine Schritt-für-Schritt-Anleitung, in der wir Ihnen erklären, wie Sie dies leicht bewerkstelligen können.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Einstellungen auf Ihrem Computer vorgenommen haben, damit die Umgebung optimal für das Web Scraping ist:

  • Java11 – Es gibt fortschrittlichere Versionen, aber diese bleibt bei Weitem die beliebteste unter den Entwicklern.
  • Maven – Maven ist ein Build-Werkzeug für die Verwaltung von Abhängigkeiten und dergleichen
  • IntelliJ IDEA – IntelliJ IDEA ist eine integrierte Entwicklungsumgebung für die Entwicklung von in Java geschriebener Computersoftware.
  • HtmlUnit – Es handelt sich um einen Browser-Aktivitätssimulator (z. B. Simulation einer Formularübermittlung).

Sie können die Installationen mit den folgenden Befehlen überprüfen:

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

Erster Schritt: Überprüfen Sie Ihre Zielwebsite

Gehen Sie auf die Zielwebsite, auf der Sie Daten erfassen möchten. Klicken Sie dann mit der rechten Maustaste auf eine beliebige Stelle und wählen Sie „inspect element“ (Element inspizieren), um auf die „Developer Console“ (Entwicklerkonsole) zuzugreifen, die Ihnen Zugriff auf den HTML-Code der Seite gewährt.

Zweiter Schritt: Beginnen Sie mit dem HTML-Scrapen

Öffnen Sie IntelliJ IDEA und erstellen Sie ein Maven-Projekt:

Maven-Projekte haben eine pom.xml-Datei. Navigieren Sie zur pom.xml-Datei und richten Sie zunächst die JDK-Version für Ihr Projekt ein:

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

Da wir htmlunit verwenden werden, fügen Sie die „htmlunit“-Abhängigkeit wie folgt in die pom.xml-Datei ein:

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

Jetzt sind die Voraussetzungen gegeben, um mit dem Schreiben der ersten Java-Klasse zu beginnen. Beginnen Sie mit der Erstellung einer neuen Java-Quelldatei wie folgt:

Damit die Anwendung startet, müssen Sie eine Hauptmethode erstellen. Erstellen Sie die Hauptmethode wie folgt:

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

Die App wird mit dieser Methode gestartet. Das ist der Einstiegspunkt der Anwendung. Sie können nun folgendermaßen eine HTTP-Anfrage mit HtmlUnit importen senden:

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

Erstellen Sie nun einen WebClient, indem Sie die Optionen wie folgt einstellen:

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

Dritter Schritt: Extrahieren/Parsen der Daten aus der HTML-Datei

Extrahieren Sie nun die Zielpreisdaten, an denen Sie interessiert sind. Um dies zu erreichen, verwenden Sie die folgenden integrierten HtmlUnit-Befehle. So würde das für Datenpunkte zum „Produktpreis“ aussehen:

		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();
		}	

Um den XPath des gewünschten Elements zu erhalten, verwenden Sie die „Developer Console“. Klicken Sie in der „Developer Console“ mit der rechten Maustaste auf den ausgewählten Abschnitt und dann auf „Copy Xpath“ (XPath kopieren). Mit diesem Befehl wird der ausgewählte Abschnitt als XPath-Ausdruck kopiert:

Die Webseiten enthalten Links, Texte, Grafiken und Tabellen. Wenn Sie einen XPath einer Tabelle auswählen, können Sie diese in CSV exportieren und weitere Berechnungen und Analysen mit Programmen wie Microsoft Excel durchführen. Im nächsten Schritt schauen wir uns das Exportieren einer Tabelle in Form einer CSV-Datei näher an.

Vierter Schritt: Daten exportieren

Nachdem die Daten geparst wurden, können Sie sie zur weiteren Analyse in das CSV-Format exportieren. Dieses Format wird von einigen Fachleuten möglicherweise bevorzugt, da es leicht in Microsoft Excel geöffnet/angezeigt werden kann. Hier sind die Befehlszeilen, die Sie zu diesem Zweck verwenden müssen:

	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();
	}

Fazit

Java kann für Programmierer, Datenwissenschaftler und Expertenteams ein effektives Werkzeug sein, um Zugang zu den Zieldatenpunkten zu erhalten, die ihr Unternehmen benötigt. Aber die Verwendung von Java für das Web Scraping kann eine mühsame Angelegenheit sein. Deshalb haben zahlreiche Unternehmen beschlossen, ihre Datenerfassung vollständig zu automatisieren. Durch den Einsatz eines Tools wie Data Collector sind alle Mitarbeiter*innen eines Unternehmens in der Lage die benötigten Daten zu erfassen, ohne dass sie über Programmierkenntnisse verfügen müssen. Sie müssen lediglich die Zielwebsite und den Datensatz auswählen und dann die gewünschte „collection frequency“ (Erfassungshäufigkeit), das „Format“ und die „method of delivery“ (Ausgabemethode) festlegen.

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.