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

时间:2014-03-28 21:02:15

标签: java web-crawler crawler4j incompatibletypeerror

我正在使用http://code.google.com/p/crawler4j/中的一些抓取代码。

现在,我要做的是从另一个类访问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); 

当我尝试使用“return”来获取我的网址时,我收到此错误:

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

它要求我将类型更改为'void',但当然,我不想这样做。

这是我遇到问题的功能:

@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,但因为它是一个“阻塞操作”,所以它不起作用。我的想法已经不多了。

1 个答案:

答案 0 :(得分:1)

如果更改方法签名,则无法覆盖方法。如果您更改签名,则表示您正在制作新方法。如果您想要的只是您访问过的网址列表,而不是返回网址,请尝试将它们存储在ArrayList中并创建一个返回列表的getter。