Я пишу сканер, и в этом сканере я не хочу сканировать некоторые страницы (исключая некоторые ссылки, чтобы они не сканировались).Поэтому я написал исключения для этой страницы.Что-то не так с этим кодом .. Поскольку этот http://www.host.com/technology/ URL вызывается несмотря на написание исключений .. Я не хочу, чтобы любой URL, начинающийся с этого URL http://www.host.com/technology/, сканировался ..
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("============="); } }
Если вы не хотите сканировать URL-адрес, который начинается с с исключениями, вам нужно сделать что-то вроде этого:
for(String exclusion : exclusions){ if(href.startsWith(exclusion)){ return false; } }
Кроме того, оператор if не является циклом.