J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)

Ce que j'ai fait

J'ai utilisé Jsoup pour gratter le graphique boursier de Yahoo! Finance. À propos, le graphique boursier gratté est Alibaba. La raison pour laquelle j'ai choisi Alibaba est simplement parce que je veux qu'elle grandisse. .. ..

Comme ça

スクリーンショット 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="Cours de l'action Alibaba!" />
</body>

Commentaire

Qu'est-ce qu'un document?

Stocke le HTML spécifié dans l'URL. Le nom de la méthode est connect (). Par exemple, dans ce cas, Document est spécifié comme suit.

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

Lorsque cela est affiché sur la console, il apportera tout le HTML de la page spécifiée! C'est incroyable.

<!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]: Actions/Prix de l'action- Yahoo!la finance</title> 
  <meta charset="utf-8"> 
  <meta name="description" content="Cours de l'action d'Alibaba Group Holding [BABA]. Couvre les cours des actions, les graphiques, les performances, etc. de toutes les actions cotées à la NYSE (New York Stock Exchange) et au NASDAQ. Les actions et les classements japonais ADR sont également importants."> 
  <meta name="keywords" content="Prix de l'action,Dow,Nasduck,Amérique,Classement"> 
...réduction...
  <meta property="og:description" content="Cours de l'action d'Alibaba Group Holding [BABA]. Couvre les cours des actions, les graphiques, les performances, etc. de toutes les actions cotées à la NYSE (New York Stock Exchange) et au NASDAQ. Les actions et les classements japonais ADR sont également importants."> 
  <meta property="og:title" content="Alibaba Group Holding [BABA]: Actions/Prix de l'action- Yahoo!la finance"> 
...Omis ci-dessous

Qu'est-ce que Element?

Stocke les éléments de l'objet Document obtenu ci-dessus. Le nom de la méthode est select (). Par exemple, dans ce cas, Element est spécifié comme suit.

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

J'obtiens la balise img dans la classe styleChart de la balise div. Lorsque ceci est affiché sur la console,

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

Comment obtenir uniquement l'attribut src de la balise img que j'ai obtenue?

Vous pouvez obtenir la valeur de l'attribut spécifié par attr () à partir de l'objet Element. Cette fois, l'attribut src de la balise img est stocké dans une variable appelée imgSrc de type String.

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

Lorsque ceci est affiché sur la console,

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

Enfin, le contrôleur transmet la valeur à la vue et renvoie la page.

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

Il s'avère qu'il est étonnamment facile à gratter. c'est tout. Merci d'avoir lu jusqu'au bout.

référence

Site Web de récupération avec jsoup How to parse for image src using JSOUP?my Thymeleaf conditional img src

Recommended Posts

J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)
J'ai essayé d'utiliser Java REPL
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
J'ai essayé d'utiliser JWT en Java
J'ai essayé d'utiliser le mémo Java LocalDate
J'ai essayé d'utiliser Google HttpClient de Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
java j'ai essayé de casser un simple bloc
J'ai essayé de frapper une méthode Java d'ABCL
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de casser le bloc avec java (1)
J'ai essayé d'exécuter Java dans un terminal Mac
J'ai essayé d'utiliser Gson
Pratique de grattage avec Java ②
J'ai essayé d'utiliser TestNG
J'ai essayé d'utiliser Galasa
Pratique du grattage avec Java ①
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
J'ai essayé d'utiliser une connexion à une base de données dans le développement Android
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé OCR de traiter un fichier PDF avec Java
Essayez de gratter en utilisant Java [Note]
J'ai essayé Drools (Java, InputStream)
J'ai essayé d'utiliser Apache Wicket
Faire un diamant en utilisant Java
J'ai essayé la métaprogrammation avec Java
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé d'utiliser le référentiel GitHub comme serveur de bibliothèque
J'ai essayé de moderniser une application Java EE avec OpenShift.
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé d'utiliser Dapr en Java pour faciliter le développement de microservices
J'ai créé un client RESAS-API en Java
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
J'ai créé un Dockerfile pour démarrer Glassfish 5 en utilisant Oracle Java
J'ai essayé Tribuo édité par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai essayé d'utiliser Spring + Mybatis + DbUnit
J'ai créé un PDF avec Java.
Télécharger des fichiers à l'aide de Java HttpURLConnection
J'ai essayé un petit docker de digdag.
Une personne écrivant C ++ a essayé d'écrire Java
[Unity] J'ai essayé de créer un plug-in natif UniNWPathMonitor en utilisant NWPathMonitor
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé le framework Java "Quarkus"
J'ai essayé de résumer l'apprentissage Java (1)
[Android] J'ai essayé d'utiliser la disposition du coordinateur.
J'ai essayé d'utiliser le conteneur Pari gp
J'ai essayé d'utiliser WebAssembly Stadio (version 2018/4/17)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé de créer une simple application Android de reconnaissance faciale en utilisant OpenCV
J'ai essayé d'apprendre Java avec une série que les débutants peuvent comprendre clairement
J'ai essayé un problème de calendrier avec Ruby
J'ai essayé d'utiliser Realm avec Swift UI
J'ai essayé d'utiliser l'outil de diagnostic Java Arthas
J'ai essayé d'utiliser UICollectionViewListCell ajouté à partir de Xcode12.
J'ai essayé le mappeur d'objets de Cassandra pour Java