У меня есть этот исходный код Java, который мне дал один из моих друзей, и, к сожалению, он уехал из страны, чтобы решить мою проблему. Этот код очищает данные с веб-сайтов и заполняет саму базу данных.
Но ранее из-за некоторых изменений макета на сайте он не функционировал должным образом. Поэтому я пытаюсь перекомпилировать его, используя Eclipse. Но в нем говорится, что этот HTML-анализатор не может быть разрешенным типом, и в исходном коде, который мне дал мой друг, нет класса HTML-анализатора.
Я погуглил по поводу HTML-парсера, и это, похоже, библиотека с открытым исходным кодом. Но я не знаю, как заставить это скомпилировать код, интегрирующий его. Как мне использовать HTML Parser для компиляции моего исходного кода?
Я попытался загрузить их файлы 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;
}