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。
我没有想到这一点。谢谢。 – PinkPanties