public class Scanner {
private HtmlProcessor hp;
private String baseUrl;
private int step = 0;
public Scanner(String baseUrl) {
this.hp = new HtmlProcessor();
this.baseUrl = LinkParser.parseLink(baseUrl);
}
public void info(String url) throws IOException {
String[] links = hp.getLinksAndHrefs(url);
System.out.println("Link : " + url + "\n"
+"ExtLinksCount : " + externalLinksCount(links) + "\n"
+"Steps to main : " + step
);
String strippedLink;
for (String link : links) {
strippedLink = LinkParser.parseLink(link);
if ( strippedLink.contains(this.baseUrl) && !strippedLink.equals(this.baseUrl) ) {
++ step;
info(link);
}
step = 0;
}
}
public int externalLinksCount(String[] links) {
int counter = 0;
String parsedLink;
for (String link : links) {
parsedLink = link;
if ( ! ( parsedLink.contains( this.baseUrl ) ) ) {
++counter;
}
}
return counter;
}
}
入力にいくつかのリンクがあります: "http://test.com" このリンクには次のリンクがあります: "http://test.com", "http://test.com/some", "http://google. com」および「http://test.com/some」にはリンクがあります:「http://facebook.com」、「some.com」
必要な結果: メインへのステップ: 0 リンク: "http://test.com" ExtLinksCount: 1
メインへの手順: 1 リンク: "http://test.com/some" ExtLinksCount: 2
このページのすべての外部リンクをカウントする必要があります。このページに内部リンクがある場合は、内部リンクに移動し、このページのすべての外部リンクとベース ページに戻る手順などをカウントします。ページからリンクを取得する方法は知っていますが、この問題を正しく解決する方法がわかりません。私のバリアントでは、この問題を再帰で解決しています。しかし、サイトがベース リンクと同じ場合、プログラムがクラッシュしました。