Je joue avec nutch. J'essaye d'écrire quelque chose qui inclut également la détection des noeuds spécifiques dans la structure de DOM et l'extraction des données de texte autour du noeud. par exemple. le texte des noeuds parents, des noeuds frères etc. J'ai recherché et lu quelques exemples et ai alors essayé d'écrire un plugin qui fera ceci pour un noeud d'image. Une partie du code,Comment obtenir le texte environnant d'un noeud?
if("img".equalsIgnoreCase(nodeName) && nodeType == Node.ELEMENT_NODE){
String imageUrl = "No Url";
String altText = "No Text";
String imageName = "No Image Name"; //For the sake of simpler code, default values set to
//avoid nullpointerException in findMatches method
NamedNodeMap attributes = currentNode.getAttributes();
List<String>ParentNodesText = new ArrayList<String>();
ParentNodesText = getSurroundingText(currentNode);
//Analyze the attributes values inside the img node. <img src="xxx" alt="myPic">
for(int i = 0; i < attributes.getLength(); i++){
Attr attr = (Attr)attributes.item(i);
if("src".equalsIgnoreCase(attr.getName())){
imageUrl = getImageUrl(base, attr);
imageName = getImageName(imageUrl);
}
else if("alt".equalsIgnoreCase(attr.getName())){
altText = attr.getValue().toLowerCase();
}
}
private List<String> getSurroundingText(Node currentNode){
List<String> SurroundingText = new ArrayList<String>();
while(currentNode != null){
if(currentNode.getNodeType() == Node.TEXT_NODE){
String text = currentNode.getNodeValue().trim();
SurroundingText.add(text.toLowerCase());
}
if(currentNode.getPreviousSibling() != null && currentNode.getPreviousSibling().getNodeType() == Node.TEXT_NODE){
String text = currentNode.getPreviousSibling().getNodeValue().trim();
SurroundingText.add(text.toLowerCase());
}
currentNode = currentNode.getParentNode();
}
return SurroundingText;
}
Cela ne semble pas fonctionner correctement. La balise img est détectée, le nom de l'image et l'URL sont récupérés mais plus d'aide. le module getSurroundingText a l'air trop moche, j'ai essayé mais je n'ai pas pu l'améliorer. Je n'ai pas d'idée claire d'où et comment puis-je extraire du texte qui pourrait être lié à l'image. Toute aide s'il vous plaît?