Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.

Was ich getan habe

Ich habe Jsoup verwendet, um den Aktienchart von Yahoo! Finance zu kratzen. Das Scraped Stock Chart ist übrigens Alibaba. Der Grund, warum ich mich für Alibaba entschieden habe, ist einfach, weil ich möchte, dass es wächst. .. ..

So was

スクリーンショット 2020-05-31 20.06.36.png

Code

@Controller
public class YahooFinanceController {
	private static final String YAHOO_FINANCE_URL = "https://stocks.finance.yahoo.co.jp/us/detail/BABA";
	
	@RequestMapping("/")
	public String index(Model model) {
        Document YahooDoc = null;
        String imgSrc = null;
        try {
           YahooDoc = Jsoup.connect(YAHOO_FINANCE_URL).get();
           Elements img = YahooDoc.select("div.styleChart img");
           imgSrc = img.attr("src");
        } catch (IOException e) {
            e.printStackTrace();
        }
	    model.addAttribute("imgSrc", imgSrc);
	    return "index";
	}	
}
<body>
	<img th:src="${imgSrc}" title="Alibaba Aktienkurs!" />
</body>

Kommentar

Was ist ein Dokument?

Speichert den in der URL angegebenen HTML-Code. Der Methodenname lautet connect (). In diesem Fall wird das Dokument beispielsweise wie folgt angegeben.

Document YahooDoc = Jsoup.connect(YAHOO_FINANCE_URL).get();

Wenn dies auf der Konsole angezeigt wird, wird der gesamte HTML-Code der angegebenen Seite angezeigt! Es ist wunderbar.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja"> 
 <head> 
  <title>Alibaba Group Holding [BABA]: Aktien/Standard Preis- Yahoo!Finanzen</title> 
  <meta charset="utf-8"> 
  <meta name="description" content="Aktienkurs der Alibaba Group Holding [BABA]. Deckt Aktienkurse, Charts, Performance usw. aller an der NYSE (New York Stock Exchange) und der NASDAQ notierten Aktien ab. Die japanischen Aktien und Rankings von ADR sind ebenfalls beachtlich."> 
  <meta name="keywords" content="Standard Preis,Dow,Nasduck,Amerika,Rangfolge"> 
...Kürzung...
  <meta property="og:description" content="Aktienkurs der Alibaba Group Holding [BABA]. Deckt Aktienkurse, Charts, Performance usw. aller an der NYSE (New York Stock Exchange) und der NASDAQ notierten Aktien ab. Die japanischen Aktien und Rankings von ADR sind ebenfalls beachtlich."> 
  <meta property="og:title" content="Alibaba Group Holding [BABA]: Aktien/Standard Preis- Yahoo!Finanzen"> 
...Unten weggelassen

Was ist Element?

Speichert die Elemente aus dem oben erhaltenen Dokumentobjekt. Der Methodenname lautet select (). In diesem Fall wird Element beispielsweise wie folgt angegeben.

Elements img = YahooDoc.select("div.styleChart img");

Ich erhalte das img-Tag in der styleChart-Klasse des div-Tags. Wenn dies auf der Konsole angezeigt wird,

<img src="https://chart.yahoo.co.jp/?code=BABA&amp;tm=1d&amp;size=e" alt="Diagrammbild">

Wie erhalte ich nur das src-Attribut des img-Tags, das ich erhalten habe?

Sie können den Wert des durch attr () angegebenen Attributs aus dem Element-Objekt abrufen. Dieses Mal wird das src-Attribut des img-Tags in einer Variablen namens imgSrc vom Typ String gespeichert.

String imgSrc = img.attr("src");

Wenn dies auf der Konsole angezeigt wird,

https://chart.yahoo.co.jp/?code=BABA&tm=1d&size=e

Schließlich übergibt der Controller den Wert an die Ansicht und gibt die Seite zurück.

model.addAttribute("imgSrc", imgSrc);
return "index";

Es stellt sich heraus, dass es überraschend leicht zu kratzen ist. das ist alles. Vielen Dank für das Lesen bis zum Ende.

Referenz

Scraping der Website mit jsoup How to parse for image src using JSOUP?my Thymeleaf conditional img src

Recommended Posts

Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.
Ich habe versucht, Java REPL zu verwenden
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
Ich habe versucht, JWT in Java zu verwenden
Ich habe versucht, Java Memo LocalDate zu verwenden
Ich habe versucht, Google HttpClient von Java zu verwenden
Ich habe versucht, die Elasticsearch-API in Java zu verwenden
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, eine Java-Methode von ABCL zu verwenden
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, Java in einem Mac-Terminal auszuführen
Ich habe versucht, Gson zu benutzen
Schrottpraxis mit Java ②
Ich habe versucht, TestNG zu verwenden
Ich habe versucht, Galasa zu benutzen
Schrottpraxis mit Java ①
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
Ich habe versucht, SQS mit AWS Java SDK zu betreiben
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Versuchen Sie, mit Java zu kratzen [Hinweis]
Ich habe Drools (Java, InputStream) ausprobiert.
Ich habe versucht, Apache Wicket zu verwenden
Machen Sie einen Diamanten mit Java
Ich habe versucht, Metaprogrammierung mit Java
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, das GitHub-Repository als Bibliotheksserver zu verwenden
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe versucht, Dapr in Java zu verwenden, um die Entwicklung von Mikroservices zu erleichtern
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, die CameraX-Bibliothek mit Android Java Fragment zu verwenden
Ich habe eine Docker-Datei erstellt, um Glassfish 5 mit Oracle Java zu starten
Ich habe Tribuo von Oracle ausprobiert. Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
Ich habe versucht, Spring + Mybatis + DbUnit zu verwenden
Ich habe ein PDF mit Java erstellt.
Laden Sie Dateien mit Java HttpURLConnection hoch
Ich habe ein wenig digdags docker.run_options ausprobiert
Eine Person, die C ++ schreibt, hat versucht, Java zu schreiben
[Unity] Ich habe mit NWPathMonitor ein natives Plug-In UniNWPathMonitor erstellt
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe das Java-Framework "Quarkus" ausprobiert.
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
[Android] Ich habe versucht, das Koordinatorlayout zu verwenden.
Ich habe versucht, Pari GP Container zu verwenden
Ich habe versucht, WebAssembly Stadio (Version 2018/4/17) zu verwenden.
Ich habe jetzt versucht, Java 8 zusammenzufassen
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
Ich habe versucht, Java mit einer Reihe zu lernen, die Anfänger klar verstehen können
Ich habe ein Kalenderproblem mit Ruby versucht
Ich habe versucht, Realm mit Swift UI zu verwenden
Ich habe versucht, das Java-Diagnosetool Arthas zu verwenden
Ich habe versucht, UICollectionViewListCell zu verwenden, das von Xcode12 hinzugefügt wurde.
Ich habe Cassandras Object Mapper für Java ausprobiert