Исключить некоторые URL из сканирования - PullRequest
0 голосов
/ 15 июля 2011

Я пишу сканер, и в этом сканере я не хочу сканировать некоторые страницы (исключая некоторые ссылки, чтобы они не сканировались).Поэтому я написал исключения для этой страницы.Что-то не так с этим кодом .. Поскольку этот http://www.host.com/technology/ URL вызывается несмотря на написание исключений .. Я не хочу, чтобы любой URL, начинающийся с этого URL http://www.host.com/technology/, сканировался ..

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("=============");
    }   
}

1 Ответ

2 голосов
/ 15 июля 2011

Если вы не хотите сканировать URL-адрес, который начинается с с исключениями, вам нужно сделать что-то вроде этого:

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

Кроме того, оператор if не является циклом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...