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
我需要计算此页面上的所有外部链接,如果此页面有内部链接,请转到内部链接并计算此页面上的所有外部链接以及返回基本页面的步骤等。我知道如何从页面获取链接,但我不知道如何正确解决这个问题。在我的变体中,我用递归解决了这个问题。但是如果站点与基本链接相同,程序就会崩溃。