Selektornachhilfe JSoup

Diskutiere Selektornachhilfe JSoup im Allgemeine Java-Themen Forum; Hallo zusammen, ich habe neulich hier die Bibliothek JSoup entdeckt und damit ein bisschen herumgespielt. Nun habe ich ein kleines Problem....

  1. f10
    f10 Mitglied
    Hallo zusammen,

    ich habe neulich hier die Bibliothek JSoup entdeckt und damit ein bisschen herumgespielt.

    Nun habe ich ein kleines Problem. Reine Fiktion: Ich habe eine Lieblingswebseite und auf dieser präsentiert ein Restaurant seine Highlightangebote. Die Struktur der Webseite sieht ungefährt so aus:

    HTML:
    <h1 class="big">
    <a class="special_link" href="/dates/2016/12/28">
    <font class="event_link">MI. 28.12.16 MEXIKANISCH</font>
    </a>
    </font>
    </h1>
    <div style="width:500px;">
    <font class="raum_info">oben:</font>
    <br/>
    <font style="white-space:nowrap;">
    <font class="highlight_title">TAPAS</font>
    <font class="highlight_information“>- 4,80</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="highlight_title">BURRITOS</font>
    <font class="highlight_information">- 3,70</font>
    </font>
    <br/>
    </div>
    <a class="more_link" href="/dates/2016/12/28">weiter lesen...</a>
    <br/>
    <br/>
    <h1 class="big">
    <a class="special_link" href="/dates/2016/12/31">
    <font class="event_link">SA. 31.12.16 SILVESTER</font>
    </a>
    </font>
    </h1>
    <div style="width:550px;">
    <font class="raum_info">oben:</font>
    <br/>
    <font style="white-space:nowrap;">
    <font class="highlight_title">Hirschragout</font>
    <font class="highlight_information“>- 22,80</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Sauerbraten</font>
    <font class="information“>- 11,70</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Cordon Bleu</font>
    <font class="information“>- 5,90</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Schnitzel</font>
    <font class="information">- 2,50</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Kartoffeln</font>
    <font class="information“>- 0,60</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Braubier</font>
    <font class="information“>- 2,30</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Gemüse</font>
    <font class="information“>- 0,50</font>
    </font>
    <br/>
    <font class=„raum_info">unseen:</font>
    <br/>
    <font style="white-space:nowrap;">
    <font class="title">Rotten</font>
    <font class="information“>- 10,60</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Weisswein</font>
    <font class="information“>- 11,20</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Rosé</font>
    <font class="information“>- 12,50</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Sekt</font>
    <font class="information">- 30,40</font>
    </font>
    <br/>
    </div>
    <a class="more_link" href="/dates/2016/12/31">weiter lesen...</a>
    <br/>
    <br/>
    <h1 class="big">
    <a class="freitag_link" href="/dates/2017/01/06">
    <font class="event_link">FR. 06.01.17 CABARET ZUM FRUEHSTUECK </font>
    </a>
    </font>
    </h1>
    <div style="width:550px;">
    <font class="raum_info">oben:</font>
    <br/>
    <font style="white-space:nowrap;">
    <font class="highlight_title">CREME BRULEE</font>
    <font class="highlight_information">- 4,90</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="highlight_title">RUEHREI MIT KARTOFFELSALAT</font>
    <font class="highlight_information">- 7,60</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Orangensaft</font>
    <font class="information">- 2,30</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">U.V.M.</font>
    <font class="information">und wie immer vieles mehr</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">MODERATION:</font></font>
    <font style="white-space:nowrap;">
    <font class="title">Paule Paulson</font>
    <font class="information">(Heidewitzka)</font>
    </font>
    <br/>
    </div>
    <a class="more_link" href="/dates/2017/01/06">weiter lesen...</a>
    <br/>
    <br/>
    <h1 class="big">
    <a class="samstag_link" href="/dates/2017/01/07">
    <font class="event_link">SA. 07.01.17 THEATER MIT FREUNDEN</font>
    </a>
    </font>
    </h1>
    <div style="width:550px;">
    <font class="raum_info">oben:</font>
    <br/>
    <font style="white-space:nowrap;">
    <font class="highlight_title">Entenbrustfilet</font>
    <font class="highlight_information">- 6,90</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="highlight_title">Gänsebraten</font>
    <font class="highlight_information">- 5,80</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="highlight_title">Hühnerfrikasse</font>
    <font class="highlight_information">- 5,70</font>
    </font>
    <br/>
    <font class="raum_info">unten:</font>
    <br/>
    <font style="white-space:nowrap;">
    <font class="title">Kaninchen</font>
    <font class="information">- 5,90</font>
    </font>
    <font style="white-space:nowrap;">
    <font class="title">Rehkeule</font>
    <font class="information">- 12,60</font>
    </font>
    <br/>
    </div>
    <a class="more_link" href="/dates/2017/01/07">weiter lesen...</a>
    <br/>
    <br/>
     
    und das geht so weiter...
    Nun wollte ich alle Events in eine Liste packen.

    Code (Java):
    org.jsoup.nodes.Document doc = org.jsoup.Jsoup.connect("http://link.zum/Restaurant.html").get();

    org.jsoup.select.Elements events = doc.select("font.event_link");

    ArrayList<String> vas = new ArrayList<String>();

    for (org.jsoup.nodes.Element e : events)
               vas.add(e.text());
     
    Klappt auch wunderbar. Per Substring kann ich ja nun auch den Tag und das Datum und den Namen des Events in Strings speichern, da der Titel ja immer nach dem gleichen Schema aufgebaut ist. (z.B. FR. 13.08.16 STAR TREK MITTAGESSEN). Soweit so gut. Die Highlights ("font.highlight_title" und "font.title") bekomme ich auch in eine Liste geladen. Aber wie kann ich jetzt zum Beispiel nur die Highlights in eine Liste laden, die es am 13.08.16 gibt? Hat da jemand einen Tipp für mich? Denn anhand von CSS-Selektoren kriege ich das ja nicht formuliert, oder?
    Ich würde die Highlights gern nach Datum sortiert in Listen speichern wollen, aber noch fehlt mir die Idee, wie ich das bewerkstelligen soll.

    Vielen Dank schon mal.

    LG
    f10
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Kababär
    Kababär Aktives Mitglied
    Ich persönlich würde das mit dem OOP-Prinzip lösen. Mache ich eigentlich immer wenn mehr als 3 Attribute zusammengehören.
    So könntest du dir eine Klasse erstellen, bzw eine Liste und dann kannst du ja Methoden schreiben a la getHighlightsByDate, getMealsByDate, etc pp
     
  4. f10
    f10 Mitglied
    Einfacher (für mich) ist es wohl, wenn ich das Ganze als String aneinanderreihe und dann splitte.

    Aber ich verfolge den Gedanken von dir mal.
     
Die Seite wird geladen...

Selektornachhilfe JSoup - Ähnliche Themen

Jsoup, Links weiter benutzen
Jsoup, Links weiter benutzen im Forum Allgemeine Java-Themen
Welche JSoup Methoden Und Parameter für diese HTML Tags
Welche JSoup Methoden Und Parameter für diese HTML Tags im Forum Java Basics - Anfänger-Themen
JSoup - HTML Tag entfernen
JSoup - HTML Tag entfernen im Forum Allgemeine Java-Themen
Java Jsoup : OnLoad
Java Jsoup : OnLoad im Forum Netzwerkprogrammierung
Probleme mit Jsoup in .jar File
Probleme mit Jsoup in .jar File im Forum XML und Co.
Thema: Selektornachhilfe JSoup