HTML-Analyse (Scraping) mit JAVA

Einführung

Bei der Erneuerung einer Site werden häufig Datenmigrationsarbeiten durchgeführt. Sie können es manuell tun, aber es kostet Geld, also Funktionen wie die HTML-Erfassung im Batch ⇒ Analyse ⇒ Einführung in ein neues System können hilfreich sein.

In Java ist eine Bibliothek namens jsoup berühmt. In Python ist eine Bibliothek namens beautifulsoup4 berühmt.

jsoup: https://jsoup.org/ beautifulsoup4: https://pypi.org/project/beautifulsoup4/

1 jsoup jsoup ist eine JAVA-Bibliothek für die HTML-Analyse. Sie können HTML einfach mit dem jquery-ähnlichen Selektor analysieren. Unterstützt WHATWG HTML5-Spezifikationen.

1-1 Erstellen Sie ein JAVA-Projekt und führen Sie die Bibliothek ein

Gradle Beispiel:

// https://mvnrepository.com/artifact/org.jsoup/jsoup
compile group: 'org.jsoup', name: 'jsoup', version: '1.12.1'

1-2 Beispiel für den Erwerb des Yahoo News-Titels

1-2-1 HTML-Struktur

image.png

1-2-2 Einfacher Analysecode zum Extrahieren von Titel und URL

package com.test.jsoup;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupHtmlParser {

	public static void main(String[] args) throws IOException {
		Document doc = Jsoup.connect("https://news.yahoo.co.jp").get();
		//Holen Sie sich das a-Tag für jeden Artikel. Beschrieben auf die gleiche Weise wie der jQuery-Selektor
		Elements newsHeadlines = doc.select(".topicsList li.topicsListItem a");
		for (Element headline : newsHeadlines) {
			System.out.println("title: " + headline.ownText() + ",  href: " + headline.absUrl("href"));
		}
	}
}

1-2-3 Analyseergebnis

title:Rekordsturm durch Taifun, bei dem zwei Menschen getötet wurden,  href: https://news.yahoo.co.jp/pickup/6336014
title:Der Flughafen Narita war mit 10.000 Menschen überfüllt,  href: https://news.yahoo.co.jp/pickup/6336017
title:Sicherheitsunternehmen 3.Vorkehrungen, um 600 Millionen Yen zu stehlen,  href: https://news.yahoo.co.jp/pickup/6336018
title:Probleme mit der Normalisierung des geplanten Fahrplanes,  href: https://news.yahoo.co.jp/pickup/6336013
title:Der summende Student zerreißt 50 Mal in Flammen,  href: https://news.yahoo.co.jp/pickup/6335993
title:Basketball World Cup 5. Niederlage 3P Entfernen Sie alle,  href: https://news.yahoo.co.jp/pickup/6336020
title:Rücktritt vom NPB Professional Sports Association,  href: https://news.yahoo.co.jp/pickup/6336015
title:Ryo Yoshizawa "Ungewöhnlicher Druck",  href: https://news.yahoo.co.jp/pickup/6336022

1-3 Analysieren von HTML-Zeichenfolgen

1-3-1 Analyseprobe

package com.test.jsoup;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupHtmlParser {

	public static void main(String[] args) throws IOException {
		String html = "<h1>HTML-Fragmente analysieren</h1><div><p>P1</p>";
		Document doc = Jsoup.parseBodyFragment(html);
		
		//Wenn Sie das Dokument so ausgeben, wie es ist, HTML,Ein Body-Tag wurde hinzugefügt. Seien Sie also vorsichtig, wenn Sie Fragmente analysieren.
		System.out.println(doc.html());
		
		System.out.println("==========================");
		
		//Ausgabeelemente des Körpers
		Element body = doc.body();
		System.out.println(body.html());
	}
}

1-3-2 Analyseergebnis

<html>
 <head></head>
 <body>
  <h1>HTML-Fragmente analysieren</h1>
  <div>
   <p>P1</p>
  </div>
 </body>
</html>
==========================
<h1>HTML-Fragmente analysieren</h1>
<div>
 <p>P1</p>
</div>

Darüber hinaus gibt es auf der Site leicht verständlichen Beispielcode wie HTML-Analyse, Datenextraktion und Datenkorrektur aus Dateien. https://jsoup.org/cookbook/input/load-document-from-file

das ist alles

Recommended Posts

HTML-Analyse (Scraping) mit JAVA
HTML5-Entwicklung von Java mit TeaVM
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
Installieren Sie Java mit Homebrew
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Bequemer Download mit JAVA
Schrottpraxis mit Java ②
Schalten Sie Java mit direnv
Schrottpraxis mit Java ①
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Endian-Konvertierung mit JAVA
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
[Java / Kotlin] Escape-Verarbeitung (Bereinigung) für HTML5 mit Unbescape [Spring Boot]
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Experimentieren wir mit der Java-Inline-Erweiterung
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Java zum Spielen mit Function
Versuchen Sie, mit Java zu kratzen [Hinweis]
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Lassen Sie uns Excel mit Java betreiben! !!
Java-Versionsverwaltung mit SDKMAN
RSA-Verschlüsselung / Entschlüsselung mit Java 8
Paging PDF mit Java + PDFBox.jar
Implementierung eines mathematischen Syntaxanalysators durch rekursive absteigende Syntaxanalysemethode (Java)
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Fehlerbehebung mit Java Flight Recorder
2 Implementieren Sie eine einfache Syntaxanalyse in Java
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Fehler beim Spielen mit Java
Erste Schritte mit Java Basics
Einfaches Web-Scraping mit Jsoup
Saisonale Anzeige mit Java-Schalter
Verwenden Sie SpatiaLite mit Java / JDBC
Vergleichen Sie Java 8 Optional mit Swift
Führen Sie Java VM mit Web Assembly aus
Bildschirmübergang mit Swing, Java
Java Unit Test mit Mockito
[Java 8] Doppelte Löschung (& doppelte Überprüfung) mit Stream
Java-Lambda-Ausdruck, der mit Comparator gelernt wurde
Erstellen eines Java-Projekts mit Gradle
Installieren Sie Java mit Ubuntu 16.04 Docker
Java mit Ramen lernen [Teil 1]
Morphologische Analyse in Java mit Kuromoji
Verwenden Sie Java mit MSYS und Cygwin
Verteilte Ablaufverfolgung mit OpenCensus und Java
100% reines Java BDD mit JGiven (Einführung)