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」を使用して URL を取得しようとすると、次のエラーが発生します。
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;
}
ゲッターも使ってみましたが「ブロッキング操作」なのでうまくいきません。私はアイデアが不足しています。