2011-07-15 41 views
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("============="); 
    } 
} 

答えて

2

したくない場合を除外してを開始任意のURLをクロールするために、あなたはこのような何かをする必要があると思います。また

for(String exclusion : exclusions){ 
    if(href.startsWith(exclusion)){ 
     return false; 
    } 
} 

、ANを文はループでない場合。

+0

お返事ありがとうございました..私が何をしていたのか分かりません.. – ferhan

+0

あなたが見ていたのは、ifの代わりにURL全体が除外リスト(excluions.contains(href) URLは除外のいずれかで始まりました(私の例)。 – Jeffrey

+0

答えと説明に感謝します... – ferhan

関連する問題