Erreur de programmation en java
mehdi
-
mehdi -
mehdi -
Bonjour,
je suis actuellement entrain de concevoir un crawler en java mais comme je ne maitrise pas bien ce langage je bug un peu!
j'ai essayé de le programmé et en le compilant je rencontre quelques erreurs du genre "local variable hides a field" ou encores "cannot find symbol"
voici le programme, si quelqu'un d'entre vous pourrait me dépanner sa serait trés gentil de sa part!
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.tags.TitleTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.beans.StringBean;
import java.util.Enumeration;
import java.io.IOException;
public class HtmlParser {
// define l'url de site à aspirer
private static final String URLSite = "";
//extensions permises à analyser
private static final Vector ExtensionPermises = new Vector();
static {
ExtensionPermises.add(".html");
ExtensionPermises.add(".htm");
ExtensionPermises.add(".jsp");
ExtensionPermises.add(".php");
ExtensionPermises.add(".aspx");
}
// propriétés de bases
private URL SiteInitial;
private String Domaine;
HashMap URLVisité = new HashMap();
Vector URLaVisité = new Vector();
Vector URLpage = new Vector();
Vector URLp = new Vector();
Vector liste_page = new Vector();
Vector liste_page_f = new Vector();
File fichier = new File("fichier.txt");
int i=0;
// options d'aspiration
private final int maxURLaVisité = 20;
private final boolean MemeDomaine = true;
// verbosity options
private final boolean reduit = true;
private final boolean URLInvalide = false;
private final boolean DomaineInvalid = false;
private final DecimalFormat df;
private String format(String string) { return string.replaceAll("\n", "").replaceAll("\\s+", " ").trim(); }
private String base(URL url) { return url.getProtocol() + "://" + url.getHost() + url.getFile(); }
public HtmlParser(String url) {
// initialisation de propriété de l'aspirateur
try {
SiteInitial = url.startsWith("www.") ? new URL("http://"+url) : new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
URLaVisité.add(SiteInitial);
String[] domain = SiteInitial.getHost().split("\\.");
Domaine = domain[domain.length - 2] + "." + domain[domain.length-1];
StringBuffer format = new StringBuffer();
for (int i = 0; i < maxURLaVisité ; i++) format.append("0");
P.S: C'EST AU NIVEAU DE LA LIGNE CI DESSUS QU'IL M'AFFICHE L'ERREUR: "LOCAL VARIABLE HIDES A FIELD"
df = new DecimalFormat(format.toString());
}
public void run() {
// Aspirer le web
while (URLVisité.size() <= maxURLaVisité && URLaVisité.size() != 0) {
try {
if (URLVisité.get(new URL(base((URL)URLaVisité.get(0)))) == null) visit((URL)URLaVisité.get(0));
} catch (MalformedURLException e) {}
URLaVisité.remove(0);
}
/* if (!reduit) {
System.out.println("");
Set set = URLVisité.entrySet();
Iterator i = set.iterator();
int num = 1;
//while ( i.hasNext() ) {
// Entry entry = i.next();
// System.out.println(df.format(num++) + " url : " + entry.getKey().toString() + " - title : " + format(entry.getValue()));
//}
}*/
}
private void visit(URL url) {
if ( URLVisité.size() >= maxURLaVisité ) return;
String path = url.getPath();
int lastDot = path.lastIndexOf(".");
if(lastDot > 0 && !ExtensionPermises.contains(path.substring(lastDot))) return;
if (url.toString().startsWith("mailto:")) return;
/*
if (MemeDomaine) {
String[] domain = url.getHost().split("\\.");
if ( domain.length < 3 ) return;
if ( !Domaine.equals(domain[domain.length - 2] + "." + domain[domain.length-1])) {
if (reduit && DomaineInvalid)
System.err.println("Not same domain : (" + domain[domain.length - 2] + "." + domain[domain.length-1] +") " + url.toString());
return;
}
}*/
// créer une instance page et ajouter son url et l'url père
page1 p1=new page1();
p1.set(url.toString(),url.getHost());
"ET C'EST AU NIVEAU DES DEUX LIGNES PRECEDENTES QU'IL M'AFFICHE L'ERREUR: "CANNOT FIND SYMBOL"
try {
// extraire le titre de la page et les liens
Parser parser = new Parser(url.toString());
NodeList titreList = parser.parse(new NodeClassFilter (TitleTag.class));
String titre = (titreList.size() != 0) ? ((TitleTag) titreList.elementAt(0)).getTitle() : "";
// extraire le texte de la page
StringBean sb = new StringBean ();
sb.setLinks (false);
sb.setReplaceNonBreakingSpaces(true);
sb.setCollapse(true);
sb.setURL(url.toString());
String s1="rrrrrr" +"\n";
String s = sb.getStrings();
// créer un fichier qui va contenir le text
File monfic = new File ("unfic"+i+".txt");
try {
BufferedWriter sortie = new BufferedWriter(new FileWriter("mots.txt", true));
sortie.write("fichier \n");
sortie.write("unfic"+i+".txt"+"\n");
} catch (IOException ex) {
Logger.getLogger(HtmlParser.class.getName()).log(Level.SEVERE, null, ex);
}
try {
FileWriter infic = new FileWriter(monfic);
infic.write(s);
} catch (IOException ex) {
Logger.getLogger(HtmlParser.class.getName()).log(Level.SEVERE, null, ex);
}
i++;
parser.reset();
NodeList list = parser.parse (new NodeClassFilter (LinkTag.class));
// l'URL est noté comme visité
URLVisité.put(new URL(base(url)), titre);
/*if (reduit)*/ System.out.println(df.format(URLVisité.size()) + " url : " + url.toString() + " - titre : " + format(titre) + "- contenu :\n" + s);
//else System.out.print(".");
// saisir le nouveau lien à visiter
for (int i = 0; i < list.size(); i++) {
LinkTag tag = (LinkTag) list.elementAt(i);
if (tag.getAttributeEx("href") == null || tag.getAttributeEx("href").getValue().equals("#")) continue; // ignore "#" href
String href = tag.extractLink();
try {
URL urlFound = new URL(href);
// tous les url des pages externes au site
if (!urlFound.getHost().equalsIgnoreCase(url.getHost()))
{
System.out.println("---------------");
System.out.println(urlFound.getHost());
System.out.println(url.getHost());
System.out.println("---------------");
System.out.println("******---------------*******");
System.out.println(URLp.contains(urlFound));
System.out.println("******---------------******");
// Si la page a été déja crée Alors modifier le compteur nombre de liens entrants
if (URLp.contains(urlFound))
{
// parcourir la liste pour recupérer la page
for (Enumeration e = liste_page.elements() ; e.hasMoreElements() ;)
{
page1 pp = (page1) e.nextElement();
if (pp.get_url().equalsIgnoreCase(urlFound.toString()))
{
System.out.println("************ Modification ********");
System.out.println(pp.get_url());
// modifier la page et la remplacer dans la liste
liste_page.remove(pp);
pp.set_n_liens(pp.get_nbl()+ 1);
liste_page.add(pp);
System.out.println(pp.get_nbl());
}
}
}
// in créer la page
else
{
page1 p2=new page1();
p2.initialiser(urlFound.toString(),urlFound.getHost().toString(),1);
URLp.add(urlFound);
liste_page.add(p2);
//liste_page_f.add(p2);
}
}
if (URLVisité.get(new URL(base(urlFound))) == null)
{
URLaVisité.add(urlFound);
}
} catch (MalformedURLException e) {
if (reduit && URLInvalide) System.err.println("invalid url : " + href + " " + format(list.elementAt(i).toHtml()));
}
}
} catch (ParserException e) {
System.err.println(e.getLocalizedMessage());
} catch (MalformedURLException e) {}
}
public HashMap get_hmp(){
return URLVisité;
}
public void affiche()
{
System.out.println("***************** les pages **********");
for (Enumeration e = liste_page.elements() ; e.hasMoreElements() ;)
{ page1 pp = (page1) e.nextElement();
System.out.println(pp.get_url());
System.out.println(pp.get_nbl());
}
System.out.println("***************** les pages **********");
}
}
}
vous n'auriez pas une petite indication s'il vous plait?
merci d'avance
je suis actuellement entrain de concevoir un crawler en java mais comme je ne maitrise pas bien ce langage je bug un peu!
j'ai essayé de le programmé et en le compilant je rencontre quelques erreurs du genre "local variable hides a field" ou encores "cannot find symbol"
voici le programme, si quelqu'un d'entre vous pourrait me dépanner sa serait trés gentil de sa part!
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.tags.TitleTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.beans.StringBean;
import java.util.Enumeration;
import java.io.IOException;
public class HtmlParser {
// define l'url de site à aspirer
private static final String URLSite = "";
//extensions permises à analyser
private static final Vector ExtensionPermises = new Vector();
static {
ExtensionPermises.add(".html");
ExtensionPermises.add(".htm");
ExtensionPermises.add(".jsp");
ExtensionPermises.add(".php");
ExtensionPermises.add(".aspx");
}
// propriétés de bases
private URL SiteInitial;
private String Domaine;
HashMap URLVisité = new HashMap();
Vector URLaVisité = new Vector();
Vector URLpage = new Vector();
Vector URLp = new Vector();
Vector liste_page = new Vector();
Vector liste_page_f = new Vector();
File fichier = new File("fichier.txt");
int i=0;
// options d'aspiration
private final int maxURLaVisité = 20;
private final boolean MemeDomaine = true;
// verbosity options
private final boolean reduit = true;
private final boolean URLInvalide = false;
private final boolean DomaineInvalid = false;
private final DecimalFormat df;
private String format(String string) { return string.replaceAll("\n", "").replaceAll("\\s+", " ").trim(); }
private String base(URL url) { return url.getProtocol() + "://" + url.getHost() + url.getFile(); }
public HtmlParser(String url) {
// initialisation de propriété de l'aspirateur
try {
SiteInitial = url.startsWith("www.") ? new URL("http://"+url) : new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
URLaVisité.add(SiteInitial);
String[] domain = SiteInitial.getHost().split("\\.");
Domaine = domain[domain.length - 2] + "." + domain[domain.length-1];
StringBuffer format = new StringBuffer();
for (int i = 0; i < maxURLaVisité ; i++) format.append("0");
P.S: C'EST AU NIVEAU DE LA LIGNE CI DESSUS QU'IL M'AFFICHE L'ERREUR: "LOCAL VARIABLE HIDES A FIELD"
df = new DecimalFormat(format.toString());
}
public void run() {
// Aspirer le web
while (URLVisité.size() <= maxURLaVisité && URLaVisité.size() != 0) {
try {
if (URLVisité.get(new URL(base((URL)URLaVisité.get(0)))) == null) visit((URL)URLaVisité.get(0));
} catch (MalformedURLException e) {}
URLaVisité.remove(0);
}
/* if (!reduit) {
System.out.println("");
Set set = URLVisité.entrySet();
Iterator i = set.iterator();
int num = 1;
//while ( i.hasNext() ) {
// Entry entry = i.next();
// System.out.println(df.format(num++) + " url : " + entry.getKey().toString() + " - title : " + format(entry.getValue()));
//}
}*/
}
private void visit(URL url) {
if ( URLVisité.size() >= maxURLaVisité ) return;
String path = url.getPath();
int lastDot = path.lastIndexOf(".");
if(lastDot > 0 && !ExtensionPermises.contains(path.substring(lastDot))) return;
if (url.toString().startsWith("mailto:")) return;
/*
if (MemeDomaine) {
String[] domain = url.getHost().split("\\.");
if ( domain.length < 3 ) return;
if ( !Domaine.equals(domain[domain.length - 2] + "." + domain[domain.length-1])) {
if (reduit && DomaineInvalid)
System.err.println("Not same domain : (" + domain[domain.length - 2] + "." + domain[domain.length-1] +") " + url.toString());
return;
}
}*/
// créer une instance page et ajouter son url et l'url père
page1 p1=new page1();
p1.set(url.toString(),url.getHost());
"ET C'EST AU NIVEAU DES DEUX LIGNES PRECEDENTES QU'IL M'AFFICHE L'ERREUR: "CANNOT FIND SYMBOL"
try {
// extraire le titre de la page et les liens
Parser parser = new Parser(url.toString());
NodeList titreList = parser.parse(new NodeClassFilter (TitleTag.class));
String titre = (titreList.size() != 0) ? ((TitleTag) titreList.elementAt(0)).getTitle() : "";
// extraire le texte de la page
StringBean sb = new StringBean ();
sb.setLinks (false);
sb.setReplaceNonBreakingSpaces(true);
sb.setCollapse(true);
sb.setURL(url.toString());
String s1="rrrrrr" +"\n";
String s = sb.getStrings();
// créer un fichier qui va contenir le text
File monfic = new File ("unfic"+i+".txt");
try {
BufferedWriter sortie = new BufferedWriter(new FileWriter("mots.txt", true));
sortie.write("fichier \n");
sortie.write("unfic"+i+".txt"+"\n");
} catch (IOException ex) {
Logger.getLogger(HtmlParser.class.getName()).log(Level.SEVERE, null, ex);
}
try {
FileWriter infic = new FileWriter(monfic);
infic.write(s);
} catch (IOException ex) {
Logger.getLogger(HtmlParser.class.getName()).log(Level.SEVERE, null, ex);
}
i++;
parser.reset();
NodeList list = parser.parse (new NodeClassFilter (LinkTag.class));
// l'URL est noté comme visité
URLVisité.put(new URL(base(url)), titre);
/*if (reduit)*/ System.out.println(df.format(URLVisité.size()) + " url : " + url.toString() + " - titre : " + format(titre) + "- contenu :\n" + s);
//else System.out.print(".");
// saisir le nouveau lien à visiter
for (int i = 0; i < list.size(); i++) {
LinkTag tag = (LinkTag) list.elementAt(i);
if (tag.getAttributeEx("href") == null || tag.getAttributeEx("href").getValue().equals("#")) continue; // ignore "#" href
String href = tag.extractLink();
try {
URL urlFound = new URL(href);
// tous les url des pages externes au site
if (!urlFound.getHost().equalsIgnoreCase(url.getHost()))
{
System.out.println("---------------");
System.out.println(urlFound.getHost());
System.out.println(url.getHost());
System.out.println("---------------");
System.out.println("******---------------*******");
System.out.println(URLp.contains(urlFound));
System.out.println("******---------------******");
// Si la page a été déja crée Alors modifier le compteur nombre de liens entrants
if (URLp.contains(urlFound))
{
// parcourir la liste pour recupérer la page
for (Enumeration e = liste_page.elements() ; e.hasMoreElements() ;)
{
page1 pp = (page1) e.nextElement();
if (pp.get_url().equalsIgnoreCase(urlFound.toString()))
{
System.out.println("************ Modification ********");
System.out.println(pp.get_url());
// modifier la page et la remplacer dans la liste
liste_page.remove(pp);
pp.set_n_liens(pp.get_nbl()+ 1);
liste_page.add(pp);
System.out.println(pp.get_nbl());
}
}
}
// in créer la page
else
{
page1 p2=new page1();
p2.initialiser(urlFound.toString(),urlFound.getHost().toString(),1);
URLp.add(urlFound);
liste_page.add(p2);
//liste_page_f.add(p2);
}
}
if (URLVisité.get(new URL(base(urlFound))) == null)
{
URLaVisité.add(urlFound);
}
} catch (MalformedURLException e) {
if (reduit && URLInvalide) System.err.println("invalid url : " + href + " " + format(list.elementAt(i).toHtml()));
}
}
} catch (ParserException e) {
System.err.println(e.getLocalizedMessage());
} catch (MalformedURLException e) {}
}
public HashMap get_hmp(){
return URLVisité;
}
public void affiche()
{
System.out.println("***************** les pages **********");
for (Enumeration e = liste_page.elements() ; e.hasMoreElements() ;)
{ page1 pp = (page1) e.nextElement();
System.out.println(pp.get_url());
System.out.println(pp.get_nbl());
}
System.out.println("***************** les pages **********");
}
}
}
vous n'auriez pas une petite indication s'il vous plait?
merci d'avance
A voir également:
- Erreur de programmation en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
Tu peux nous faire le plaisir de mettre ton code en un bloc entre les balises <code > et </code > (sans les espaces avant le >).
Car là on ne sait pas trop ce qui est le code et ce qui est le texte, avec des trucs gras et autres.
Eventuellement met en commentaire tes remarques dans le code.
Merci
Car là on ne sait pas trop ce qui est le code et ce qui est le texte, avec des trucs gras et autres.
Eventuellement met en commentaire tes remarques dans le code.
Merci
les erreurs se trouvent dans les lignes qui sont en gras, la premiére etant "local variable hides a field" et la deuxiéme: "cannot find symbol"