Si ce sont des logs alors regarde du côté des API de logs, type log4j Tu y définies les sorties : console, fichier, ... Solution propre
Tu peux modifier le flux de sortie de System.out Dans ton main tu changes le flux pour définir un fichier plutôt que la sortie standard : System.setOut(new PrintStream(new File("ton path"))); Solution sale
Solution de ksass`peuk : Bien si c'est l'utilisation d'un programme en ligne de commande. Tu ne dois/peux pas remodifier le programme.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
Enfte mon programme doit pouvoir, lire les données d'une page et les copier dans un fichier, j'avais déjà ecrit un post pour lire une page, ça c'est réussi, mais maintenant il faut que je copie c'est données dans un fichier.
Et j'ai une autre question aussi comment faire quand on a un nombre conséquent de page à analyser ?
Je laisse mon code pour que vous puissiez y voir plus claire.
package net.clinsearch.interne.drugs.parseur;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import javax.ejb.Remove;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;
import com.sun.messaging.jmq.jmsserver.auth.usermgr.Output;
import com.sun.messaging.jmq.jmsserver.data.handlers.admin.GetMessagesHandler;
@SuppressWarnings("unused")
public class Parse {
void parseur() throws IOException{
try {
Document doc = Jsoup.connect("http://base-donnees-publique.medicaments.gouv.fr/affichageDoc.php?specid=61266250&typedoc=R").get();
Elements denomination = doc.select(".AmmDenomination");
Elements composition = doc.select(".AmmComposition");
Elements corptexte = doc.select(".AmmCorpsTexte");
Elements listepuce = doc.select(".AmmListePuces1");
/*Suppression des éléments "img"*/
Elements delete = doc.select("img").remove();
for (int i = 0; i < denomination.size(); i++) {
Element elem = denomination.get(i);
System.out.println("Denomination");
System.out.println(elem.text());
System.out.println("************");
}
for (int i = 0; i < composition.size(); i++) {
Element elem = composition.get(i);
System.out.println("Composition");
System.out.println(elem.text());
System.out.println("************");
}
for (int i = 0; i < listepuce.size(); i++) {
Element elem = listepuce.get(i);
System.out.println(elem.text());
}
for (int i = 0; i < corptexte.size(); i++) {
Element elem = corptexte.get(i);
System.out.println(elem.text());
}
} catch (IOException ioExcp) {
System.out.println("Impossible de lire les données : "
+ ioExcp.getMessage());
}
}
}
Merci de ta réponse je vais regarder tout ça, mais il me semble que sa ne répond pas a la question de l'analyse de plusieurs page :/ (je me trompe peut être).
je viens de voir les lien et en effet c'est bien pour écrire depuis un fichier déjà existant ou depuis un String, mais pas pour écrire des données de la console affiché depuis une url
Bah si tu veux analyser plusieurs pages tu lances plusieurs fois ton parser.
Et si tu veux que ton programme soit encore plus rapide tu peux lancer plusieurs parser en parallèles en utilisant les thread. Attention cependant, il ne faut pas que tes thread écrivent en même temps dans ton fichier.
merci de ta réponse je suis débutant en java je ne comprend pas trop ton code ou doit-je renseigner l'url par la suite ?..
Et pour le lien que tu ma donnée sa revient à ce que je te disait c'est bien pour écrire dans un fichier à partir de données que tu défini toi même dans le programme mais non depuis une url ou une données console.
parcourir la page et afficher les données dans la console c'est fait et sa fonctionne.
il me reste juste à envoyer ces données dans un fichier excel..
Oui je sais mais je suis en alternance BTS SIO et malheureusement je ne suis pas tombe dans la bonne boite .. pas le choix de refuser le poste vu les galères pour trouver une entreprise qui veut bien prendre des débutants, .. pck il veulent tous des alternants mais qui savent coder en java, javaee, c++, et j'en passe donc on te laisse pas vraiment le temps d'apprendre sauf si tu à des parents friqué qui peuvent t'assurer deux ans à 7000 Euros l'année en initial, pour moi c'est pas le cas donc je doit faire avec, quand je suis arrivé on ma dit y'a ça à faire tu le fait donc je me retrouve à coder des truc que je ne comprend pas vraiment et on ne m'aide pas trop, je taff un max et je me dit que commencé par des trucs dur sa ne peut être que bénéfique..., j'ai souvent envie de me barré et arrêter la formation mais a 2 mois du BTS sa serait un peu con :/
puis modifie/réutilise pour le faire pour plusieurs pages
parser son contenu
sortie :
fait d'abord un affichage dans la console
puis modifie ça pour que ça le fasse dans un fichier
Il n'y a rien de compliqué : tu fais quelque chose de simple, puis tu adaptes l'existant pour avoir d'autres fonctionnalités ou d'autres résultats. Une fois que tu auras compris tu sauras le faire directement.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
Ah oui je vois, c'est bien pour ça que je n'ai pas fait de BTS en alternance, quand j'ai vu que l'on devais passer un mois en entreprise avant d'avoir sa première heure de cour j'me suis dis que ça n'avait pas de sens ...
Mais bon ici on est pas trop là pour faire le travail à ta place, on est surtout là pour discuter
Le truc c'est qu'un fichier Excel a une structure de donnée particulière, tu dois donc utiliser une bibliothèque qui te permet d'écrire dans un fichier Excel sans devoir se prendre la tête avec la syntaxe/structure du document.
Si je suis ta façon de faire il me reste a copier les données dans un fichier exel les étapes d'avant c'est fait
La je suis sur la question comment envoyer tout sa dans un xls
Benoit l'alternance ces vraiment bien quand tu tombe sur une bonne école et une bonne entreprise tu gagne en compétences et en expériences un + pour ton cv, je l'ai fait pour le bac c'était le top sa ma permit de décrocher un cdi 1 moi après,le problème c'est que j'ai laché les cours pour reprendre après et la pas le choix que de passer par des écoles privées qui pour eux l'étudiant est souvent associé à un RIB, après il est vrai que le niveau est plus dur vu que tu a moins de temps en cour et pour toi.
Justement je ne veux pas qu'on me file des codes tout prêt je n'apprendrai rien.. mais je cherche juste un peut d'aide d'aiguillage
Oui je suis sur eclipse
Je laisse mes code pour avoir un avis :
Ici la classe permettant de parser les pages
package net.clinsearch.interne.drugs.parseur;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import javax.ejb.Remove;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;
import com.sun.messaging.jmq.jmsserver.auth.usermgr.Output;
import com.sun.messaging.jmq.jmsserver.data.handlers.admin.GetMessagesHandler;
@SuppressWarnings("unused")
public class Parse {
void parseur(String url) throws IOException{
try {
Document doc = Jsoup.connect(url).get();
Elements denomination = doc.select(".AmmDenomination");
Elements composition = doc.select(".AmmComposition");
Elements corptexte = doc.select(".AmmCorpsTexte");
Elements listepuce = doc.select(".AmmListePuces1");
/*Suppression des éléments "img"*/
Elements delete = doc.select("img").remove();
for (int i = 0; i < denomination.size(); i++) {
Element elem = denomination.get(i);
System.out.println("Denomination");
System.out.println(elem.text());
System.out.println("************");
}
for (int i = 0; i < composition.size(); i++) {
Element elem = composition.get(i);
System.out.println("Composition");
System.out.println(elem.text());
System.out.println("************");
}
for (int i = 0; i < listepuce.size(); i++) {
Element elem = listepuce.get(i);
System.out.println(elem.text());
}
for (int i = 0; i < corptexte.size(); i++) {
Element elem = corptexte.get(i);
System.out.println(elem.text());
}
} catch (IOException ioExcp) {
System.out.println("Impossible de lire les données : "
+ ioExcp.getMessage());
}
}
}
Ici la classe permettant de renseigner l'url de la page à parser et l'afficher dans la console :
package net.clinsearch.interne.drugs.parseur;
import java.io.IOException;
public class Parseur {
public static void main(String[] args) throws IOException {
Parse pars0 = new Parse();
pars0.parseur("http://base-donnees-publique.medicaments.gouv.fr/affichageDoc.php?specid=62869109&typedoc=R");
System.out.println("Dexieme url");
System.out.println("********************\n\n\n");
Parse pars1 = new Parse();
pars1.parseur("http://base-donnees-publique.medicaments.gouv.fr/affichageDoc.php?specid=66207341&typedoc=R");
}
}
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C