2009-07-30 18 views
1

Ich versuche, auf eine URL zuzugreifen, holen Sie sich den HTML-Code und verwenden Sie xpaths, um bestimmte Werte daraus zu erhalten. Ich bekomme das HTML gut und Jtidy scheint es sauber zu machen. Wenn ich jedoch versuche, die gewünschten Werte mithilfe von XPaths zu erhalten, bekomme ich eine leere NodeList zurück. Ich weiß, dass mein XPath-Ausdruck korrekt ist. Ich habe es auf andere Weise getestet. Was ist mit diesem Code falsch? Danke für die Hilfe.xpaths funktioniert nicht in 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

können Sie die URL-Adresse oder ist es privat? – djangofan

+0

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

Antwort

2

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

+0

das hat funktioniert! Danke vielmals! irgendeine Idee, warum die Verwendung von ID() nicht funktioniert? –

+0

Bin mir nicht sicher. Wahrscheinlich wegen der Art und Weise, die ordentlich baut den Dom Baum. –