0
私はクローラを作成していますが、そのクローラでは一部のページをクロールしたくありません(クロールされないようにリンクをいくつか除外します)。だから私はそのページのために除外を書いた。このhttp://www.host.com/technology/
URLが除外を書いたにもかかわらず呼ばなっているように、このコードに何か問題..私はクロールを取得するために、このURL http://www.host.com/technology/
で始まる任意のURLを望んでいない...一部のURLがクロールされないようにします
public class MyCrawler extends WebCrawler {
Pattern filters = Pattern.compile(".*(\\.(css|js|bmp|gif|jpe?g"
+ "|png|tiff?|mid|mp2|mp3|mp4" + "|wav|avi|mov|mpeg|ram|m4v|pdf"
+ "|rm|smil|wmv|swf|wma|zip|rar|gz))$");
List<String> exclusions;
public MyCrawler() {
exclusions = new ArrayList<String>();
//Add here all your exclusions
//I do not want this url to get crawled..
exclusions.add("http://www.host.com/technology/");
}
public boolean shouldVisit(WebURL url) {
String href = url.getURL().toLowerCase();
System.out.println(href);
if (filters.matcher(href).matches()) {
System.out.println("noooo");
return false;
}
if (exclusions.contains(href)) {//why this loop is not working??
System.out.println("Yes2");
return false;
}
if (href.startsWith("http://www.host.com/")) {
System.out.println("Yes1");
return true;
}
System.out.println("No");
return false;
}
public void visit(Page page) {
int docid = page.getWebURL().getDocid();
String url = page.getWebURL().getURL();
String text = page.getText();
List<WebURL> links = page.getURLs();
int parentDocid = page.getWebURL().getParentDocid();
System.out.println("=============");
System.out.println("Docid: " + docid);
System.out.println("URL: " + url);
System.out.println("Text length: " + text.length());
System.out.println("Number of links: " + links.size());
System.out.println("Docid of parent page: " + parentDocid);
System.out.println("=============");
}
}
お返事ありがとうございました..私が何をしていたのか分かりません.. – ferhan
あなたが見ていたのは、ifの代わりにURL全体が除外リスト(excluions.contains(href) URLは除外のいずれかで始まりました(私の例)。 – Jeffrey
答えと説明に感謝します... – ferhan