Enregistrement données fichier Excel depuis URL
Bonjour,
J'ai un gros problème, voila pour les besoins du taff il veulent un programme qui puissent récupérer des éléments d'une page web, le moyen que j'ai trouver pour faire cela est avec l'api jsoup qui me permet de parser les pages et récupérer l’élément .class afin de les l'insérer dans un fichier excel, le problème est que certains .class on le même nom mais ne définissent pas la même chose
EX: <p class="AmmCorpsTexte">Pommade.</p>
<p class="AmmCorpsTexte">Traitement d'appoint des dermites irritatives.</p>
Pour exemple c'est deux données doivent se trouver dans une colonne différente de ma feuille excel, comment faire pour les différencier, et comment répéter la même opération pour 13 000 pages ?
Je laisse mes code pour que vous puissiez y voir plus claire :
Classe qui me permet de parser la page,*
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
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 java.util.ArrayList;
import java.util.ListIterator;
import javax.ejb.Remove;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
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 {
public ArrayList<String> parseur(String url) throws IOException{
ArrayList<String> liste = new ArrayList<String>();
ArrayList<String> liste2 = new ArrayList<String>();
ArrayList<String> liste3 = new ArrayList<String>();
FileOutputStream out = new FileOutputStream("C:/Documents and Settings/c.bon/git/clinsearch/drugs/src/main/resources/META-INF/test/fichier1.xlsx");
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet feuille1 = wb.createSheet();
XSSFRow row = feuille1.createRow(0);
try {
Document doc = Jsoup.connect(url).get();
Elements denomination = doc.select(".AmmDenomination");
Elements composition = doc.select(".AmmComposition");
Elements formepharma = doc.select(".AmmCorpTexte");
/ Suppression des éléments "img" /
Elements delete = doc.select("img").remove();
XSSFRow infos = feuille1.createRow(1);
for(int i = 0; i < denomination.size(); i++) {
Element elem1 = denomination.get(i);
liste.add(denomination.text());
System.out.println(denomination.text());
}
for(int i = 0; i < composition.size(); i++) {
Element elem2 = composition.get(i);
liste2.add(composition.text());
System.out.println(composition.text());
}
for(int i = 0; i < formepharma.size(); i++) {
Element elem2 = formepharma.get(i);
liste3.add(formepharma.text());
System.out.println(formepharma.text());
}
}
catch (IOException ioExcp)
{
System.out.println("Impossible de lire les données : "
+ ioExcp.getMessage());
}
out.close();
return liste;
}
} |
Classe qui copie les données dans le fichier excel*
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| package net.clinsearch.interne.drugs.parseur;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Copyfile extends Parse{
public void creationxls() throws IOException {
FileOutputStream out = new FileOutputStream("C:/Documents and Settings/c.bon/git/clinsearch/drugs/src/main/resources/META-INF/test/fichier1.xlsx");
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFRow titre = sheet.createRow(0);
String entete[] = {"CIS", "Denomination", "Composition", "Form pharma", "Indication therapeutiques", "Posologie", "Contre indication", "Mise en garde",
"Interraction", "Effet indesirable", "Surdosage", "Pharmacodinamie", "Liste excipients", "Incompatibilité", "Duree conservation",
"Conservation", "Emballage", "Utilisation Manipulation", "TitulaireAMM"};
for(int i=0; i<entete.length; i++ ){
titre.createCell(i).setCellValue(entete[i]);
}
//insertion des données dans la feuille excel
XSSFRow data = sheet.createRow(1);
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
Parse parse = new Parse();
XSSFRow line = sheet.createRow(1);
XSSFRow line2 = sheet.createRow(2);
Iterator<String> it = list.iterator();
Iterator<String> it1 = list2.iterator();
while (it.hasNext()) {
String string = (String) it.next();
line.createCell(1).setCellValue(string);
}
while (it1.hasNext()) {
String string = (String) it1.next();
line2.createCell(1).setCellValue(string);
}
wb.write(out);
out.close();
}
} |
classe qui execute le tout
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
package net.clinsearch.interne.drugs.parseur;
import java.io.IOException;
public class Execution {
public static void main(String[] args) throws IOException {
Parse parse = new Parse();
parse.parseur("http://base-donnees-publique.medicaments.gouv.fr/affichageDoc.php?specid=63915004&typedoc=Rrl");
Copyfile copy = new Copyfile();
copy.creationxls();
}
} |
Ps : je suis debutant java
merci de votre aide