2009-11-11 96 views
0

我有這個java源代碼,其中一個我的朋友給了我,不幸的是,他是遠離國家來解決我的問題。此代碼,抓取數據來自網站並自行填充數據庫。需要Java代碼的幫助... HTML解析器不能被解析類型

但之前由於網站的一些佈局變化,它不能正常運行。所以我試着用eclipse重新編譯它。但它表示這個HTML解析器不能被解析類型,也沒有HTML解析器我的朋友給我的源代碼中的類。

我搜索了一下HTML解析器,它似乎是一個開源的庫。但我不知道如何讓它發生編譯集成它的代碼。可以幫助我一些,如何使用HTML解析器來編譯我的源代碼。

我試着下載他們的BIN文件。但不知道該怎麼處理它們。

以下是代碼的一部分,它使用HTML Parser並給出錯誤。

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

感謝任何人的興趣,幫助我out.I只說了一個函數,使用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; 
} 

回答

0

您需要將jar文件(或文件)添加到Eclipse構建路徑。

右鍵點擊Package Explorer中的項目,然後選擇構建路徑/配置構建路徑

+0

對不起,它不工作。我試了一下。它給出了同樣的錯誤。 – Shank 2009-11-11 22:31:46

0

你是怎麼確定的HTMLParser是從您引用庫?

當你的HTMLParser對象不是你的HTMLParser對象時,一些對象是完全限定的(org ....)似乎很奇怪。

難道它不是你自己的項目中的類嗎?