HtmlUnit XPath

Goldfish

Bekanntes Mitglied
Hey, ich habe hier vor kurzem den Tipp bekommen, dass ich mit htmlUnit auf Internetseiten agieren kann und probiere da aktuell entsprechend rum, in der Hoffnung, soweit zu kommen, dass ich für meine Zwecke alles machen kann.
Jedoch habe ich nun das Problem, dass ich beim abrufen eines XPaths immer eine leere Liste zurück bekomme. Ich hab schon verschiedene Dinge versucht und mehrere Syntaxvarianten ausprobiert und immer nur eine leere Liste...

Mein TestProgramm sieht aktuell wie folgt aus

Java:
public class NetController extends JFrame{

    private HtmlPage currentPage;

    public NetController(){
//        setSize(new Dimension(800,600));
//        setVisible(true);
        final WebClient webClient = new WebClient();
        try {
            currentPage = webClient.getPage("https://www.amazon.de");
        } catch (IOException ex) {
            Logger.getLogger(NetController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FailingHttpStatusCodeException ex) {
            Logger.getLogger(NetController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public Page getHomePage(String ean) throws Exception {

        final HtmlInput element = (HtmlInput) 
                              currentPage.getElementById("twotabsearchtextbox");

        element.setValueAttribute(ean);        
        
        final HtmlPage page2 = (HtmlPage) element.type((char)10);
        
        final List<HtmlElement> link =  (List<HtmlElement>) 
                                        page2.getByXPath("//div[@class='productImage']");
        
        System.out.println(page2);
        System.out.println(link.size());
        
        return page2;
    }
    
    public static void main(String[] args) {
        try {
            NetController net = new NetController();
            net.getHomePage("asterix");
            
        } catch (Exception ex) {
            Logger.getLogger(NetController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Hier geht es um zeile 27, in der der XPath angegeben wird. Meine unten Konsolenausgaben sehen im übrigen noch wie folgt aus:

HtmlPage(Amazon.de: asterix)@32587492
0

Mein SCHLUSSENDLICHES Ziel ist es, alle Links der Suchresultate der aktuellen Seite in der liste unter zu kriegen. Bisher hab ich nur versucht überhaupt irgendwas in der Liste unterzukriegen. Allerdings ohne Erfolg...
Hat jemand ne Ahnung, was ich falsch mache?
 
Zuletzt bearbeitet von einem Moderator:
N

nillehammer

Gast
Mit dem dargestellten XPath-Ausdruck suchst Du nach div-elementen, welche ein class-Attribut "productImage" haben. Nach kurzer Durchsicht des HTML-Quellcodes der von dir verlinkten Amazon-Seite, gibt es solche divs nicht. Ich habe nur img-Elemente mit entsprechendem class-Attribut gefunden
 
N

nillehammer

Gast
Und zu dem, was Du eigentlich willst (Result-Links rausfinden). Ich habe mir die Struktur der Amazon-Seite noch etwas weiter angeschaut. Die ist ja schon recht chaotisch. Aber es scheint so zu sein, dass Results u.a. auch so dargestellt werden:
HTML:
<div id="result_13" class="rslt" name="377040016X">
  <div class="image">
    <a href="http://www.amazon.de/Asterix-Geb-Bd-16-bei-Schweizern/dp/377040016X/ref=sr_1_14?ie=UTF8&qid=1347624703&sr=8-14">
      ...
    </a>
  </div>
  ...
</div>
Das heißt, folgender XPath-Ausdruck müsste es eigentlich tun:
[XML]
//div[@class='rslt']/div[@class='image']/a[1]
[/XML]
Ist ungetestet, aber was ich damit ausdrücken will ist: Selektiere das erste a-Element, welches Kindelement eines divs mit class "image" ist, welches wiederum Kindelement eines divs mit class "rslt" ist.
 

Goldfish

Bekanntes Mitglied
super, mit deiner Variante klappt es. Also ich bin auf meine Idee überhaupt erst gekommen, weil ich mir den Quelltext der Seite runtergeladen hatte und dann durchgeschaut habe, um die entsprechenden Einträge zu finden.
Mein Fund sah folgendermaßen aus:


HTML:
<div class="productImage"><a href="http://www.amazon.de/Asterix-Jubil%C3%A4umsedition-DVDs-Leo-Bardischewski/dp/B001O3AHVO"> <img src="http://ecx.images-amazon.com/images/I/51vV6Hvb0pL._SL160_AA115_.jpg" class="" border="0" alt="Produkt-Information "  width="115" height="115"/> </a></div>
<div class="productData">

  <div class="productTitle"><a href="http://www.amazon.de/Asterix-Jubil%C3%A4umsedition-DVDs-Leo-Bardischewski/dp/B001O3AHVO"> Asterix - Jubiläumsedition [7 DVDs]</a> <span class="binding"> ~ Leo Bardischewski und Lucien Raimbourg</span><span class="binding"> (<span class="format">DVD</span> - 2009)</span></div>




<div class="newPrice"><a href="http://www.amazon.de/Asterix-Jubil%C3%A4umsedition-DVDs-Leo-Bardischewski/dp/B001O3AHVO">Neu kaufen</a>:&nbsp;<span>EUR 24,82</span></div>
<div class="usedPrice">&nbsp;</div>
<div class="usedNewPrice"><div class="subPrice">45 neu ab <span>EUR 21,40</span></div>
<div class="subPrice">4 gebraucht ab <span>EUR 20,40</span></div><br/></div>


So bin ich dann auch auf das productImage gekommen. Von dem, was du dort aufgeführt hast, habe ich gar nichts gefunden... daher bin ich mir nicht so wirklich sicher, was da bei mir jetzt so schief geaufen ist...
 
N

nillehammer

Gast
Das mit der Quelltext-Ansicht im Browser ist sone Sache. Ist in den unterschiedlichen Browsern immer etwas anders. Gerade, wenn viel Content erst über JavaScript zusammengebaut wird. Am besten finde ich da die Plugins des Firefox (Hab ich hier grad nicht, aber ich glaube DOM-Browser heißt das Ding). Da sieht man wirklich alle Elemente des DOM. Egal, ob direkt im Quelltext oder erst durch JavaScript dynamisch eingefügt.
 

Goldfish

Bekanntes Mitglied
okay, ich hab mir das ganze jetzt mal mit dem Dom-Browser angesehen und die amazon Seite Stück für Stück weiter runtergelöscht, bis ich wusste, wie der Pfad auf die Suchresultate läuft.
Klappt echt super.
Jetzt muss ich nur noch schauen, ob ich das auch vernünftig umgesetzt bekomme.
Der Dom-Browser war auf jedenFall ein super Tipp.
Danke vielmals.
Ich denke hier komm ich nun wieder alleine klar ^^ hoffe ich zumindest ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kirby.exe Probleme mit XML XPATH Select XML & JSON 3
B XPath soll XML liefern XML & JSON 7
O XPATH Problem - Anfänger XML & JSON 4
M dom4j unberechtigte Invalid XPath expression XML & JSON 12
W XPath schreiben XML & JSON 1
P HTML XPath XML & JSON 1
S Ersatz für die veraltete Klasse XPath XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
P Xpath zugriff auf Attribute XML & JSON 3
P "XPath is deprecated" XML eclipse XML & JSON 3
D XPath-Query XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
H ChildNode via XPath ansprechen XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S Attribute von Elementen auslesen mit XPath XML & JSON 2
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
W XPath + Inhalt aus <td> XML & JSON 2
R XPath - frage zur Adressierung XML & JSON 3
reibi XPath XML & JSON 14
M xPath liefert leeres Nodeset XML & JSON 2
M Probleme mit XPath bei Java XML & JSON 5
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
F XPath-Problem mit DOM4J XML & JSON 8
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
O XPATH gesucht XML & JSON 6
G XPATH-Frage XML & JSON 2
L Element manipulieren in einem DOMResult per XPath XML & JSON 10
P XPath und Namespaces XML & JSON 3
G XPath - replace function funktioniert nicht XML & JSON 3
E XPATH-Ausdruck mit not XML & JSON 4
E Wieso liefert dieser XPATH-Ausdruck nicht die richtige Anzahl Treffer? XML & JSON 8
M XPath Ausdruck validieren XML & JSON 2
N XPath Adressierung XML & JSON 7
F XPath frage XML & JSON 4
B Optionaler XPath pfad XML & JSON 2
B XPath frage XML & JSON 2
T Frage zu XQuery (XQJ) / XPath XML & JSON 2
P XPath Problem XML & JSON 2
S Problem mit XPath XML & JSON 4
T Mit XPATH finden und dann änder XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
G XPath gesucht für Tag mit konkretem Content XML & JSON 2
A XPath Problem XML & JSON 2
C XPath in JDOM klappt nicht XML & JSON 2
T Prbolem XPath XML & JSON 2
X Xpath, alle Element die mit "user" beginnen auswäh XML & JSON 2
loadbrain XPath Problem XML & JSON 2
M brauche große XML-Datei für XPath-Tests XML & JSON 4
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
F hilfe bei xpath-ausdruck XML & JSON 2
K java + xpath -> performanceproblem XML & JSON 9
H Xpath kindelemente auslesen XML & JSON 2
S Xml zurück in xpath wandeln XML & JSON 8
G Frage zu XPath XML & JSON 2
flashfactor Filtern mittels XPATH XML & JSON 4
M XSL/XPath - Nur ersten Wert mit selben Attribut XML & JSON 4
M XPath Problem im Zusammenhang mit document() XML & JSON 2
M Frag zu xsl:when beziehungsweise XPath XML & JSON 3
F JDom und XPath XML & JSON 12
C xpath funktioniert nicht XML & JSON 5
M XPATH und RSS (Problem namespaces) XML & JSON 7
P nochmal XPath :-) XML & JSON 22
P XPath . XML & JSON 2
T Rekursiver Verzeichniss Baum in XML & XPath XML & JSON 4
clemson xpath mit jdom XML & JSON 2
Wildcard xpath Parser XML & JSON 8

Ähnliche Java Themen

Neue Themen


Oben