インフォボックスに含まれる情報を抽出するために、ウィキペディアのページをJavaでスクレイピングしています。
文字エンコーディングを除いて、すべて正常に動作します。ウィキペディアのページは「UTF-8」エンコーディングを使用しています。
Ubuntu Eclipse コンソールも、デフォルトのエンコーディングとして「UTF-8」を使用します。ただし、スクレイピングされた情報を表示するときに、Eclipse コンソールに奇妙な記号が表示されます。(例:Smith · Ricardo
の代わりにSmith · Ricardo
)
これは、データを読み取るために使用する関数です (ノードのすべての子孫を走査し、最後にそれらのテキスト情報を結合します)。
private String getTextContent(Node node) {
String text = "";
List<Node> children = null;
if (isTextNode(node)) {
return node.getNodeValue();
}
else if (!node.hasChildNodes()) {
return "";
}
else {
children = toList(node.getChildNodes());
for (Node childNode : children) {
text += getTextContent(childNode);
}
}
return text;
}
スクレイピングにJTidyライブラリを使用していることを忘れていました。