Java:HTML解析器不能为解析类型

Asked
Viewd1218

0

我有这个Java源代码,我的一位朋友给了我,很不幸,他不在国外解决我的问题。该代码将从网站上抓取数据并填充数据库本身。

但是以前由于网站中的某些布局更改,它无法正常运行。因此,我正在尝试使用Eclipse重新编译它。但是它说这个HTML解析器不能是解析类型,并且我朋友给我的源代码中没有HTML解析器类。

我搜索了HTML解析器,它似乎是一个开源库。但是我不知道如何实现集成它的代码。如何使用HTML解析器使我的源代码编译?

我尝试下载其BIN文件。但是不知道该怎么办。

这是代码的某些部分,它使用HTML解析器并给我错误。

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

我只说了一个使用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;
}
 

2 个答案

0

您需要将一个或多个jar文件添加到Eclipse构建路径。

在Package Explorer中右键单击项目,然后选择Build Path / Configure Build Path

0

您如何确定HTMLParser来自您引用的库?

有些对象是完全合格的(组织...),而HTMLParser对象不是合格的。

这不是您自己项目中的课程吗?