2009-11-11 10 views
0

J'ai ce code source java qu'un de mes amis m'a donné et malheureusement il est absent du pays pour résoudre mon problème.Ce code, gratte les données à partir des sites Web et remplit la base de données lui-même. Mais auparavant, en raison de certains changements de mise en page dans le site, il ne fonctionne pas correctement. Donc, je vais essayer de le recompiler en utilisant eclipse.Mais il dit que cet analyseur HTML ne peut pas être un type résolu et il n'y a pas d'analyseur HTML Classe dans le code source que mon ami m'a donné. J'ai recherché sur l'analyseur HTML et il semble être une bibliothèque open source. Mais je ne sais pas comment je fais qu'il se passe de compiler le code en l'intégrant. Quelqu'un m'aide, comment puis-je utiliser HTML Parser pour compiler mon code source.Besoin d'aide avec le code Java ... L'analyseur HTML ne peut pas être un type résolu

J'ai essayé de télécharger leurs fichiers BIN.Mais je ne sais pas quoi faire avec eux.

Voici la partie du code, où il utilise l'analyseur HTML et me donne l'erreur.

parser = new HTMLParser("file:///"+myProp.getPropertyPageLink()); 

Merci pour l'intérêt de qui que ce soit pour m'aider.J'ai déclaré une seule fonction qui utilise la classe HTMLParser.

public Property parsePropertyPage(Property myProp){ 
    myProp.setAgentId(this.agentId); 

    int count = 0; 
    String description = "No Description Available"; 
    String content = "No Content Available"; 
    predicatesFilter = new NodeFilter[2]; 
    predicatesFilter[0] = 
     new NodeClassFilter(org.htmlparser.tags.Div.class); 
    predicatesFilter[1] = 
     new NodeClassFilter(org.htmlparser.tags.Span.class); 
    filtersHolder = new OrFilter(predicatesFilter); 
    linkTag = new LinkTag(); 
    div = new Div(); 
    sp = new Span(); 
    filter = new NodeClassFilter(org.htmlparser.tags.Div.class); 
    try { 
     System.out.println("file:///"+myProp.getPropertyPageLink()); 
     parser = new HTMLParser("file:///"+myProp.getPropertyPageLink()); 
     NodeList myList = parser.extractAllNodesThatMatch(filtersHolder); 
     System.out.println("Relevant Tags : " + myList.size()); 
     for (int i = 0; i < myList.size(); i++) { 
      //System.out.println(myList.elementAt(i)); 
      if (myList.elementAt(i).getClass().equals(div.getClass())) { 
       String temp = ((Div) myList.elementAt(i)).getText(); 
       if (temp.indexOf("div id=\"agentCollapsed\"")==0) { 
        System.out.println("Process Agent"); 
        this.processAgent(myList.elementAt(i), myProp); 
       }else if ("div id=\"majorResultsNav\"".equalsIgnoreCase(temp)) { 
        System.out.println("Process Major Results"); 
        Node n = myList.elementAt(i); 
        n = n.getFirstChild().getNextSibling(); 
        n = n.getFirstChild().getNextSibling(); 
        n = n.getFirstChild().getNextSibling(); 
        n = n.getFirstChild().getNextSibling(); 
        String s = n.toPlainTextString(); 
        if (s.indexOf("for Rent") > 1) 
         myProp.setIsRental(true); 
        if (s.indexOf("for Sale") > 1) 
         myProp.setIsSales(true); 
        if (s.indexOf("Sold") > 1) 
         myProp.setIsSold(true); 
        s = s.substring(s.indexOf("-") + 1); 
        myProp.setState(s.trim()); 
       } else if ("div class=\"header\"" 
         .equalsIgnoreCase(
           myList.elementAt(i).getText())){ 
         processHeader(myList.elementAt(i), myProp); 
         System.out.println("Process Header"); 
       } else if (
         myList.elementAt(i).getText().startsWith(
         "div class=\"textual")){ 
        processTextual(myList.elementAt(i), myProp); 
        System.out.println("Process Textual"); 
       } else if (
        "div id=\"propertyLocation\"" 
         .equalsIgnoreCase(
           myList.elementAt(i).getText())){ 
        myProp.setPropertyLocation(
          myList.elementAt(i).toHtml()); 
        System.out.println("Process Property Location"); 
       } else if (
         myList.elementAt(i).getText().startsWith(
          "div class=\"minorImage")) { 
         count++; 
         myProp.setNumberOfMinorImages(count); 
         System.out.println("Process Minor Image"); 
       }else if (
        myList.elementAt(i).getText().startsWith(
         "div id=\"inspectionTimes")){ 
        processInspection(myList.elementAt(i), myProp); 
        System.out.println("Process Inspection Times"); 
       } 
      } else if (
       myList.elementAt(i).getClass().equals(sp.getClass())) 
       if ("span class=\"lg-dppl-bold\"" 
        .equalsIgnoreCase(
         ((Span) myList.elementAt(i)).getText())) 
        myProp.setPrice(
         ((Span) myList.elementAt(i)).getStringText()); 
       else if (
        "span class=\"lg-mag-bold\"".equalsIgnoreCase(
         ((Span) myList.elementAt(i)).getText())) 
        myProp.setIsSold(true); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return myProp; 
} 

Répondre

0

Vous devez ajouter le fichier jar (ou les fichiers) au chemin de compilation Eclipse.

Faites un clic droit sur le projet dans l'explorateur de paquet et sélectionnez Construire chemin/Configurer construire le chemin

+0

Désolé, cela ne fonctionne pas.J'ai essayé.Il donne la même erreur. – Shank

0

Comment avez-vous déterminé que HTMLParser était de la bibliothèque que vous faites référence?

Il semble étrange que certains objets soient entièrement qualifiés (org ....) alors que votre objet HTMLParser ne l'est pas.

Pourrait-il ne pas être une classe dans votre propre projet?

Questions connexes