我有这个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;
}