Java返回类型与WebCrawler.visit(页面)

问题描述:

不兼容我正在使用http://code.google.com/p/crawler4j/的一些爬虫代码。Java返回类型与WebCrawler.visit(页面)

现在,我想要做的是从另一个类访问在MyCrawler类中找到的每个URL。

我开始抓取工具:

// * Start the crawl. This is a blocking operation, meaning that your code 
// * will reach the line after this only when crawling is finished. 
controller.start(MyCrawler.class, numberOfCrawlers); 

当我尝试使用“回归”让我的网址,我得到这个错误:

The return type is incompatible with WebCrawler.visit(Page) 

,并要求我更改类型以“无效”,但当然,我不想。

下面是我有麻烦的功能:

@Override 
public String visit(Page page) {   
     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()); 

       return url; 

     } 

我还试图用一个getter,但因为它是一个“阻塞操作”,这是行不通的。我正在用尽想法。

如果更改方法签名,则无法重写方法。如果您更改签名,您正在制定一种新方法。如果你想要的只是你访问的url列表,而不是返回url,可以尝试将它们存储在一个ArrayList中,并创建一个返回列表的getter。

+0

我没有想到这一点。谢谢。 – PinkPanties