我有這個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;
}
對不起,它不工作。我試了一下。它給出了同樣的錯誤。 – Shank 2009-11-11 22:31:46