In diesem Thread soll ein Beispiel diskutiert werden, mit HTTPMOD die Preise auf der Seite www.goldinvest.at abzufragen.
Hier nur der Startpost, funktionsfähiger Code folgt.
Was man zunächst festhalten muss, ist dass diese Webseite einen dermaßen dummen Aufbau hat, dass es mich nur gruselt. Beispiel: Man kann bis zu 1000 Münzen einer Sorte verkaufen - dann stehen im HTML-Code tatsächlich 1000 Zeilen mit einem Wert für eine Auswahlbox, also <option value="1">1</option> usw. bis 1000. Das bedeutet, dass jede Suche in der Seite ewig lange Zeit in Anspruch nimmt...
Nicht ganz trivial auch, dass die interne Artikelnummer abweicht von derjenigen, die den Kunden angezeigt wird.
LG
pah
https://www.goldinvest.at/de/gold/
da wären einige artikelnummern einzeln interessant. der aufbau ist immer selbiges, einmal mit sell und einmal mit buy.
[edit]
glaube es behirnt zu haben
//div[@class="produktinfo_bxp wk_sell"]/form[@name="bstl_1212_sell"]/span[@class="preis"]/text()
wobei bei diesem Abschnitt mir "Infinity" als reading ausgeworfen wird, aber ich das Wort gar nicht im quelltext habe?
<div class="detailLink"><a href="/de/gold/goldbarren-100g/" class="button button2">»</a></div>
<div class="shopArtData2">
<div class="">
<div class="produktinfo_bxp wk_buy">
<span class="preis">11.062,14 €</span>
reading02XPath //div/a[@href="/de/gold/goldbarren-100g/"]/div/div/span[class="preis"]/text()
[edit]
habe vorerst eine andere Lösung gefunden, ich lasse mir die x auswertung anzeigen
(//div[@class="produktinfo_bxp wk_buy"]/span[@class="preis"]/text())[1]in diesem Fall die 1. Auswertung. Habe gerade in crashkurs gesehen das man auch rückwärts suchen könnte, mit parrent:: , aber das klappte nicht.
Na, dann versuch mal Folgendes:
defmod GoldAU HTTPMOD https://www.goldinvest.at/de/gold/ 600
attr GoldAU reading01Name M01Bezeichnung
attr GoldAU reading01XPath //div[@class="shopArtikel_small"]/div[2][p[@class="productnr"][text()="Artikel-Nr.: GIV1002"]]/h2/a/text()
attr GoldAU reading02Name M01Kauf
attr GoldAU reading02XPath //div[@class="shopArtikel_small"][div[2]/p[@class="productnr"][text()="Artikel-Nr.: GIV1002"]]/div[4]/div/div[@class="produktinfo_bxp wk_buy"]/span/text()
attr GoldAU reading03Name M01Verkauf
attr GoldAU reading03XPath //div[@class="shopArtikel_small"][div[2]/p[@class="productnr"][text()="Artikel-Nr.: GIV1002"]]/div[4]/div/div[@class="produktinfo_bxp wk_sell"]/form/span[1]/text()
attr GoldAU showError 1
attr GoldAU showMatched 1
Das ist jetzt für den Krügerrand ==> GIV1002.
Gegenbenenfalls die Artikelnummer durch Deine Wunschmünze ersetzen. Und dann aber nicht mit reading04 etc. weitermachen, sondern sinnvollerweise mit reading11Name etc.
LG
pah
P.S.: Ich habe das nicht aus Selbstlosigkeit gebaut, wie Du daran siehst, dass die Module Shares und Sharemaster auch von mir sind.
Puh, das ist ja noch gewaltiger zu verstehen. Werd mir das zu gemüte führen.
Aber ein gewaltiges Tool, alle Achtung.
Danke.
Ist doch ganz einfach.
1. Reading: Suche alle Knoten div mit class="shopArtikel_small", davon das 2. div-Kind. [Der gesuchte muss ein Kind p mit class="productnr" haben, dessen Inhalt lautet "Artikel-Nr.: GIV1002"]. Von diesem 2. div-Kind nimm den Textinhalt des a-Knotens unterhalb des h2-Kindes.
2. Reading: Suche alle Knoten div mit class="shopArtikel_small". [Dieses muss ein 2. div-Kind haben, [der gesuchte wiederum muss ein Kind p mit class="productnr" haben, dessen Inhalt lautet "Artikel-Nr.: GIV1002"]]. Von diesem div-Knoten nimm das 4. div-Kind, darunter noch 2 div-Ebenen bis zu dem div-Knoten mit class="produktinfo_bxp wk_buy". Und von dem den Textinhalt des span-Kindes.
3. Reading: Suche alle Knoten div mit class="shopArtikel_small". [Dieses muss ein 2. div-Kind haben, [der gesuchte wiederum muss ein Kind p mit class="productnr" haben, dessen Inhalt lautet "Artikel-Nr.: GIV1002"]]. Von diesem div-Knoten nimm das 4. div-Kind, darunter noch 2 div-Ebenen bis zu dem div-Knoten mit class="produktinfo_bxp wk_sell". Und von dem den Textinhalt des 1.span-Enkelkindes vom form-Kind.
Alles klar?
LG
pah