[Java] Créez quelque chose comme une API de recherche de produits

introduction

Première fois ** Java **

Comment puis-je étudier efficacement ** Java ** (ou plutôt le codage lui-même)?

La réponse est simple: ** Créez l'application que vous souhaitez créer! **Je pense.

Je pense que le style le plus efficace est de vérifier et de mettre en œuvre les méthodes nécessaires au besoin.

Objectif

Lorsque vous entrez le mot-clé du produit que vous souhaitez, comme un site général de la CE Un système qui renvoie des résultats de recherche (** code JAN du produit, titre, prix, URL de la page **) faire

Préparation

Vous devez créer une base de données

Cette fois, j'ai essayé de créer une telle base de données instantanément

test.csv


JAN,Title,Price,URL
4543112341136,HG 1/144 (034)Frappez la liberté GUNDAM,1344,https://item.rakuten.co.jp/kenbill/4543112341136/
4543112655110,RG 1/144 (002)MS-06S Zaku II de Char,2100,https://item.rakuten.co.jp/kenbill/4543112655110/
4543112752994,MG 1/100 Duel Gundam Assault Shroud GAT-X102,3528,https://item.rakuten.co.jp/kenbill/4543112752994/
4543112815972,MG 1/100 MSN-06S Sinanju,6804,https://item.rakuten.co.jp/kenbill/4543112815972/
4543112728180,MG 1/100 RX-0 Full Armor Unicorn Gundam Ver.ka,6720,https://item.rakuten.co.jp/kenbill/4543112728180/
4573102568328,HGUC 1/144 (108)RGZ-95C Risel(Machine du capitaine),1848,https://item.rakuten.co.jp/kenbill/4573102568328/

À partir de la gauche, *** code JAN, titre du produit, prix, lien vers la page produit ***

Par exemple, si un utilisateur recherche "** Gundam ", une liste de produits (code JAN, titre du produit, prix, URL) qui inclut " Gundam **" dans le titre du produit sera renvoyée comme résultat de la recherche. C'est une fabrication.

Code (version complète)

Historique de la dernière mise à jour: 21/04/2019

Main.java


//coding:utf-8
import java.io.FileWriter;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;//Entrée standard
import java.io.IOException;

public class Main{
    public static String green  = "\u001b[00;32m";
    public static String pink   = "\u001b[00;35m";
    public static String end    = "\u001b[00m";
    public static HashMap<String, String>  HashTitle = new HashMap<String, String>();
    public static HashMap<String, String>  HashPrice = new HashMap<String, String>();
    public static HashMap<String, String>  HashURL   = new HashMap<String, String>();
    public static void main(String args[]){
        //Lire le fichier
        try{
            File file = new File("test.csv");
            FileReader filereader = new FileReader(file);
            BufferedReader bufferreader = new BufferedReader(filereader);

            String line;
            int cnt=0;
            while ((line = bufferreader.readLine()) != null) {
                String[] list = line.split(",");
                String JAN=list[0], Title=list[1], Price=list[2], URL=list[3];
                if (cnt != 0){
                    resister(JAN,Title,Price,URL);
                }
                cnt+=1;
            }     
            filereader.close();
        }catch(FileNotFoundException e){
            System.out.println(e);
        }catch(IOException e){
            System.out.println(e);
        }
        //Entrée standard
        Scanner scanner = new Scanner(System.in);
        System.out.print("input item keywords> ");
        String input = scanner.nextLine();
        System.out.println(pink+input+end);
        scanner.close();

        //Recherche de produit
        Search sh = new Search();
        Search value = sh.search_item(input, HashTitle, HashPrice, HashURL);
        System.out.println("api.Sortie xml");
    }

    public static void resister(String JAN,String Title, String Price, String URL){
         HashTitle.put(JAN, Title);
         HashPrice.put(JAN, Price);
         HashURL.put(JAN, URL);
    }
}


//Définition de la classe de recherche
//(search_Je souhaite avoir plusieurs valeurs de retour pour l'élément, je dois donc définir une classe)
class Search {
    String keyword;
    String result="";//Je viens de déclarer"null"Entrera
    String result_JAN;
    String result_Title;
    String result_Price;
    String result_URL;

    public Search search_item(String input, HashMap<String, String> HashTitle, HashMap<String, String> HashPrice, HashMap<String, String> HashURL){
        Search sh  = new Search();
        sh.keyword = input;
        try {
            FileWriter fw = new FileWriter("api.xml");
            fw.write("<API_result>\n");
            for (String key : HashTitle.keySet()){
                if (HashTitle.get(key).contains(sh.keyword)){
                    sh.result_JAN   = key;
                    sh.result_Title = HashTitle.get(key);
                    sh.result_Price = HashPrice.get(key);
                    sh.result_URL   = HashURL.get(key);
                    sh.result       = sh.result + sh.result_JAN+','+sh.result_Title+','+sh.result_Price+','+sh.result_URL+'\n';
                    fw.write("<Item>\n");
                    fw.write("<JAN>"+sh.result_JAN+"</JAN>\n");
                    fw.write("<Title>"+sh.result_Title+"</Title>\n");
                    fw.write("<Price>"+sh.result_Price+"</Price>\n");
                    fw.write("<URL>"+sh.result_URL+"</URL>\n");
                    fw.write("</Item>\n\n");
            }
        }
            fw.write("</API_result>");
            fw.close();
        } catch (IOException ex) {
             ex.printStackTrace();
        }
        //fw.close();
        return sh;//Retour par nom de classe
    }
}

Courir

Ligne de commande スクリーンショット 2019-04-20 21.35.19.png

Fichier de sortie

api.xml


<API_result>
<Item>
<JAN>4543112655110</JAN>
<Title>RG 1/144 (002)MS-06S Zaku II de Char</Title>
<Price>2100</Price>
<URL>https://item.rakuten.co.jp/kenbill/4543112655110/</URL>
</Item>

<Item>
<JAN>4543112341136</JAN>
<Title>HG 1/144 (034)Frappez la liberté GUNDAM</Title>
<Price>1344</Price>
<URL>https://item.rakuten.co.jp/kenbill/4543112341136/</URL>
</Item>

<Item>
<JAN>4573102568328</JAN>
<Title>HGUC 1/144 (108)RGZ-95C Risel(Machine du capitaine)</Title>
<Price>1848</Price>
<URL>https://item.rakuten.co.jp/kenbill/4573102568328/</URL>
</Item>
</API_result>

Terminé en renvoyant le résultat de la recherche (XML)! !!

Si vous faites la même chose avec Python, vous pouvez le faire en quelques secondes ...

Mémo de progression

-Lire la base de données (fichier) ・ Construction de type dictionnaire ・ Génération de classe ・ Correspondance de motifs ・ Exportation de fichier ・ XML

Recommended Posts

[Java] Créez quelque chose comme une API de recherche de produits
Étudiez Java: utilisez Timer pour créer quelque chose comme un minuteur de bombe
Implémenter quelque chose comme une pile en Java
[Java] Nouvelle spécification Implémentation de l'API de recherche de produits Yahoo!
[Java] Créer un filtre
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
Créer une méthode java [Memo] [java11]
[Java] Créer un fichier temporaire
Créer un SlackBot avec AWS lambda et API Gateway en Java
Créer un projet Java à l'aide d'Eclipse
Créer une SkipList nommée en Java qui ressemble à un ensemble trié redis
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créez une énumération haute performance avec des champs et des méthodes comme Java avec JavaScript
Créez une application de recherche de restaurant avec l'API IBM Watson + Guru Navi (avec source)
[Java] Créer et appliquer un masque des diapositives
Créez quelque chose comme Enum de Java avec Typescript
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
Créons un environnement de développement Java (mise à jour)
Créer une application TODO dans Java 7 Créer un en-tête
Créer un service d'API RESTful à l'aide de Grape
Créer une API à l'aide de Retrofit2, Okhttp3 et Gson (Java)
Créez une application de recherche simple avec Spring Boot
Créer un CSR avec des informations étendues en Java
Créez un tableau d'affichage simple avec Java + MySQL
Créons une API REST à l'aide de WildFly Swarm.
[Windows] [IntelliJ] [Java] [Tomcat] Créer un environnement pour Tomcat 9 avec IntelliJ
Créons un processus chronométré avec la minuterie de Java! !!
Essayez de créer un babillard en Java
[Java] Créer une collection avec un seul élément
Créons un framework Web ultra-simple avec Java
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
Créer Scala Seq à partir de Java, faire de Scala Seq une liste Java
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
[Java] Obtenez des images avec l'API Google Custom Search
[Java] Créons un Minecraft Mod 1.14.4 [99. Mod output]
Créer un serveur API Web avec Spring Boot
API Java Stream
Quelque chose à propos de java
[Java] Créons un Minecraft Mod 1.14.4 [0. Fichier de base]
Créez un environnement de développement Java à l'aide de jenv sur votre Mac
[Java] Créons un Minecraft Mod 1.14.4 [4. Ajouter des outils]
Créer une image docker pour exécuter une application Java simple
Comment créer un environnement Java en seulement 3 secondes
Je veux faire quelque chose comme "cls" en Java
Appelez l'API Amazon Product Advertising 5.0 (PA-API v5) en Java
[Java] Créons un Minecraft Mod 1.14.4 [5. Ajouter une armure]
[Java] Créons un Minecraft Mod 1.14.4 [édition supplémentaire]
[Java] Créons un Minecraft Mod 1.14.4 [7. Add progress]
[Java] Créons un Minecraft Mod 1.14.4 [6. Ajouter une recette]
[Débutant] Créez un jeu compétitif avec des connaissances de base sur Java
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un élément]
[Java] Créons un Minecraft Mod 1.16.1 [Fichier de base]
Système de gestion des tâches / clones Java / Twitter ① Créer une base de données
J'ai essayé de créer une compétence Clova en Java
[Java] Créons un Minecraft Mod 1.14.4 [1. Ajouter un élément]