2009-07-30 8 views
1

J'essaie d'accéder à une URL, d'obtenir le code HTML et d'utiliser xpaths pour obtenir certaines valeurs. Je reçois très bien le html et Jtidy semble le nettoyer correctement. Cependant, lorsque j'essaie d'obtenir les valeurs souhaitées en utilisant xpaths, je récupère une liste de nœuds vide. Je sais que mon expression xpath est correcte; Je l'ai testé d'autres façons. Quel est le problème avec ce code. Merci pour l'aide.xpaths ne fonctionne pas en java

String url_string = base_url + countries[c]; 
URL url = new URL(url_string); 

Tidy tidy = new Tidy(); 
tidy.setShowWarnings(false); 
tidy.setXHTML(true); 
tidy.setMakeClean(true); 
Document doc = tidy.parseDOM(url.openStream(), null); 
//tidy.pprint(doc, System.out); 

String xpath_string = "id('catlisting')//a"; 
XPath xpath = XPathFactory.newInstance().newXPath(); 
XPathExpression expr = xpath.compile(xpath_string); 

NodeList nodes = (NodeList)expr.evaluate(doc, XPathConstants.NODESET); 
System.out.println("size="+nodes.getLength()); 
for (int r=0; r<nodes.getLength(); r++) { 
    System.out.println(nodes.item(r).getNodeValue()); 
} 
+0

peut que vous publiez l'url ou est-il privé? – djangofan

+0

http://www.rockclimbing.com/routes/Africa/ –

Répondre

2

Try "// div [@ id = 'catlisting'] // un"

+0

qui a fonctionné! Merci beaucoup! une idée de pourquoi utiliser id() ne fonctionne pas? –

+0

Je ne suis pas sûr de ça. Probablement en raison de la façon dont le tidy construit l'arbre dom. –