Web crawler Crawler4j-nosuch方法getOutgoingUrls()
我正在尝试设置craweler4j。我正在Netbeans中从源代码构建它。我使用的是crawler4j的3.5版本,调用的类与网站上曾经给出的类相同——为了方便在下面复制-Web crawler Crawler4j-nosuch方法getOutgoingUrls(),web-crawler,crawler4j,Web Crawler,Crawler4j,我正在尝试设置craweler4j。我正在Netbeans中从源代码构建它。我使用的是crawler4j的3.5版本,调用的类与网站上曾经给出的类相同——为了方便在下面复制- public class MyCrawler extends WebCrawler { private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|bmp|gif|jpe?g"
public class MyCrawler extends WebCrawler {
private final static 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))$");
/**
* You should implement this function to specify whether
* the given url should be crawled or not (based on your
* crawling logic).
*/
@Override
public boolean shouldVisit(WebURL url) {
String href = url.getURL().toLowerCase();
return !FILTERS.matcher(href).matches() && href.startsWith("http://www.ics.uci.edu/");
}
/**
* This function is called when a page is fetched and ready
* to be processed by your program.
*/
@Override
public void visit(Page page) {
String url = page.getWebURL().getURL();
System.out.println("URL: " + url);
if (page.getParseData() instanceof HtmlParseData) {
HtmlParseData htmlParseData = (HtmlParseData) page.getParseData();
String text = htmlParseData.getText();
String html = htmlParseData.getHtml();
List<WebURL> links = htmlParseData.getOutgoingUrls();
System.out.println("Text length: " + text.length());
System.out.println("Html length: " + html.length());
System.out.println("Number of outgoing links: " + links.size());
}
}
}
On代码编译成功,但引发以下运行时异常。请建议
Exception in thread "Crawler 1" java.lang.NoSuchMethodError: edu.uci.ics.crawler4j.parser.HtmlParseData.getOutgoingUrls()Ljava/util/Set;
at MyCrawler.visit(MyCrawler.java:42)
at edu.uci.ics.crawler4j.crawler.WebCrawler.processPage(WebCrawler.java:351)
at edu.uci.ics.crawler4j.crawler.WebCrawler.run(WebCrawler.java:220)
at java.lang.Thread.run(Thread.java:744)
我仔细研究了代码,发现了一个同名的类。但仍然存在错误 您的代码看起来不错
您可能不知何故陷入了依赖类路径的地狱——也许您有两个不同版本的crawler4j库
无论如何,我建议如下:
看看新的crawler4j github:
使用maven依赖系统,您所有的麻烦都会消失!:
<dependency>
<groupId>edu.uci.ics</groupId>
<artifactId>crawler4j</artifactId>
<version>4.1</version>
</dependency>
教育学
爬虫4J
4.1
您将获得最新版本(现在在github上而不是google代码上),使用Maven您将自动跳出所有类路径地狱
在最新版本中,我已经修复了很多错误,因此我真的建议转到最新和最棒的版本如果您认为我的答案可以接受,我可以要求您接受吗?
<dependency>
<groupId>edu.uci.ics</groupId>
<artifactId>crawler4j</artifactId>
<version>4.1</version>
</dependency>