[JAVA] Website-Scraping mit jsoup

Über diesen Artikel

Beachten Sie, dass ich die Möglichkeit hatte, eine Website mit der jsoup-Bibliothek von Java zu durchsuchen. Es gibt bereits viele Artikel, die auf leicht verständliche Weise ausführlich erklärt werden, aber es handelt sich um ein Memo. Offiziell: https://jsoup.org/

Einführungsmethode

Holen Sie sich das Glas einfach von der Official Site Download Page und fügen Sie es der Bibliothek hinzu. Es kann auch aus dem Maven-Repository installiert werden. Wenn es sich um Gradle handelt, fügen Sie build.gradle einfach die folgende Definition hinzu (Version ist die neueste zum Zeitpunkt des Schreibens).

build.gradle


dependencies {
	compile('org.jsoup:jsoup:1.12.1')
}

Anwendungsbeispiel

Nehmen Sie als Beispiel den Fall, dass Datum, Titel und URL von "Hinweis" von der folgenden Seite extrahiert werden.

<body> 
 <div class="section"> 
  <div class="block"> 
   <dl>
    <dt>2019.08.04</dt> 
    <dd>
     <a href="http://www.example.com/notice/0003.html">Hinweis 3</a>
    </dd> 
    <dt>2019.08.03</dt> 
    <dd>
     <a href="http://www.example.com/notice/0002.html">Hinweis 2</a>
    </dd> 
    <dt>2019.08.02</dt> 
    <dd>
     <a href="http://www.example.com/notice/0001.html">Hinweis 1</a>
    </dd> 
   </dl>
  </div>
 </div>
</body>

Extrahieren Sie mit dem folgenden Code.

Example.java


import java.io.IOException;
import java.util.List;

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

public class Example {

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

		//Senden Sie eine Anfrage mit GET an die angegebene URL (Post()POST ist auch möglich, wenn es sich um eine Methode handelt.
		Document document = Jsoup.connect("http://www.example.com").get();

		//Extrahieren Sie Elemente aus dem erfassten Dokument mit dem CSS-Selektor.
		//Dieses Element befindet sich im obigen HTML<div class="block">Liste der Größe 1, die dem Element von entspricht
		Elements elements = document.select(".section .block");

		//Holen Sie sich das 0. Element der Elemente und dann die untergeordneten Elemente.
		// elements.get(0).childNode(0)= Im obigen HTML<dl>Elemente von
		// elements.get(0).childNode(0).childNodes() = <dl>Des kindes<dt>Wann<dd>Liste der Elemente von
		List<Node> nodeList = elements.get(0).childNode(0).childNodes();

		//Extrahieren Sie das Datum, den Titel und die URL der Benachrichtigung aus der Knotenliste mit einer for-Schleife.
		for (int i = 0; i < nodeList.size() / 2; i++) {
			String newsDate = nodeList.get(i * 2).toString();
			String newsTitle = nodeList.get(i * 2 + 1).childNode(0).toString();
			String newsUrl = nodeList.get(i * 2 + 1).childNode(0).attr("href");

			System.out.println(newsDate);
			System.out.println(newsTitle);
			System.out.println(newsUrl);
		}
	}
}

Die Dokumentation für die in diesem Code verwendeten Klassen finden Sie unten. Sie sollten es lesen, bevor Sie es verwenden.

Document(jsoup Java HTML Parser 1.12.1 API) Elements(jsoup Java HTML Parser 1.12.1 API) Element(jsoup Java HTML Parser 1.12.1 API) Node(jsoup Java HTML Parser 1.12.1 API)

Über die tatsächliche Nutzung

Ich benutze es, um die Ankündigungsseite auf der Website der Graduiertenschule zu kratzen, auf der meine Verwandten eingeschrieben sind.

Auf der Seite "Mitteilungen der Universität" auf der Website der Universität werden grundsätzlich nur Mitteilungen veröffentlicht, die nicht mit Ihnen in Verbindung stehen. Wichtige Hinweise werden ungefähr alle paar Monate veröffentlicht, daher müssen Sie sie häufig ansehen, was ein Ärger ist. Aus diesem Grund habe ich beschlossen, einen Stapel zu erstellen, der die folgende Verarbeitung ausführt, und ihn einmal pro Stunde mit cron auszuführen.

Ich hatte einige Probleme beim Senden von E-Mails in Java. Ich werde später darüber schreiben.

Referenzartikel

jsoup-Verwendungsprotokoll: https://qiita.com/opengl-8080/items/d4864bbc335d1e99a2d7

Recommended Posts

Website-Scraping mit jsoup
Einfaches Web-Scraping mit Jsoup
HTML-Analyse (Scraping) mit JAVA
Scraping mit jsoup, um das "Likes" -Ranking von Qiita-Organisationen zu erhalten
Schaben mit Puppenspieler in Nuxt auf Docker.
[Java + jsoup] Scraping Mercaris Produkte zum Verkauf