77const DEFAULT_START_DATE = '2020-01-01' ;
88
99var ArrayList = java . util . ArrayList ;
10+ let logger = Packages . de . willuhn . logging . Logger ;
1011
1112var fetcher ;
1213var wc ;
@@ -19,17 +20,17 @@ function getAPIVersion() {
1920}
2021
2122function getVersion ( ) {
22- return "2025-01-18" ;
23- }
24-
25- function getDate ( year , month , day ) {
26- return new java . util . Date ( year - 1900 , month - 1 , day ) ;
23+ return "2026-03-18" ;
2724}
2825
2926function getURL ( ) {
3027 return "http://www.finanzen.net" ;
3128}
3229
30+ function getAktienSucheUrl ( search ) {
31+ return "http://www.finanzen.net/suchergebnis.asp?frmAktiensucheTextfeld=" + search ;
32+ }
33+
3334function getName ( ) {
3435 return "Finanzen.net" ;
3536}
@@ -48,18 +49,17 @@ function prepare(
4849
4950 wc = fetcher . getWebClient ( true ) ;
5051 wc . getOptions ( ) . setThrowExceptionOnFailingStatusCode ( false ) ;
51- Packages . de . willuhn . logging . Logger . debug ( "load http://www.finanzen.net/suchergebnis.asp?frmAktiensucheTextfeld=" + search ) ;
52- page = wc . getPage (
53- "http://www.finanzen.net/suchergebnis.asp?frmAktiensucheTextfeld=" + search
54- ) ;
52+ const url = getAktienSucheUrl ( search ) ;
53+ logger . debug ( "load " + url ) ;
54+ page = wc . getPage ( url ) ;
5555
5656 try {
57- Packages . de . willuhn . logging . Logger . debug ( "suche Link Kurse" ) ;
57+ logger . debug ( "suche Link Kurse" ) ;
5858 links = page . getAnchorByText ( "Kurse" ) ;
5959 page = links . click ( ) ;
60- Packages . de . willuhn . logging . Logger . debug ( "suche Select historic-prices-stock-market" ) ;
60+ logger . debug ( "suche Select historic-prices-stock-market" ) ;
6161 boerseSelect = page . getElementById ( "historic-prices-stock-market" ) ;
62- Packages . de . willuhn . logging . Logger . debug ( "suche Button request-historic-price" ) ;
62+ logger . debug ( "suche Button request-historic-price" ) ;
6363 searchButton = page . getElementById ( "request-historic-price" ) ;
6464
6565 input = page . getElementById ( "fromDate" ) ;
@@ -72,41 +72,59 @@ function prepare(
7272 input = page . getElementById ( "toDate" ) ;
7373 input . setValue ( input . getMax ( ) ) ;
7474 } catch ( e ) {
75+ logger . debug ( "versuche Alternative aufgrund " + e ) ;
7576 try {
76- Packages . de . willuhn . logging . Logger . debug ( "suche Link historische Kurse" ) ;
77+ logger . debug ( "suche Link historische Kurse" ) ;
7778 links = page . getAnchorByText ( "Historische Kurse" ) ;
7879 page = links . click ( ) ;
7980 } catch ( error ) {
81+ logger . debug ( "versuche Alternative aufgrund " + error ) ;
8082 try {
81- Packages . de . willuhn . logging . Logger . debug ( "suche Link Kurse & Realtime" ) ;
83+ logger . debug ( "suche Link Kurse & Realtime" ) ;
8284 links = page . getAnchorByText ( "Kurse & Realtime" ) ;
8385 page = links . click ( ) ;
84- Packages . de . willuhn . logging . Logger . debug ( "suche Link historische Kurse" ) ;
86+ logger . debug ( "suche Link historische Kurse" ) ;
8587 links = page . getAnchorByText ( "Historische Kurse" ) ;
8688 page = links . click ( ) ;
8789 } catch ( error2 ) {
90+ logger . debug ( "versuche Alternative aufgrund " + error2 ) ;
8891 // navigate to historic rates for "Zertifikate"
89- Packages . de . willuhn . logging . Logger . debug ( "suche Link Historisch" ) ;
92+ logger . debug ( "suche Link Historisch" ) ;
9093 links = page . getAnchorByText ( "Historisch" ) ;
9194 page = links . click ( ) ;
9295 }
9396 }
9497 try {
95- Packages . de . willuhn . logging . Logger . debug ( "suche Select strBoerse" ) ;
96- boerseSelect = page . getElementByName ( "strBoerse" ) ;
97- Packages . de . willuhn . logging . Logger . debug ( "suche search-Button" ) ;
98- searchButton = boerseSelect . getFirstByXPath ( "../../div/button" ) ;
98+ try {
99+ logger . debug ( "suche Select strBoerse" ) ;
100+ boerseSelect = page . getElementByName ( "strBoerse" ) ;
99101
100- input = page . getElementByName ( "dtDate1" ) ;
101- input . setValue ( input . getMin ( ) ) ;
102+ input = page . getElementByName ( "dtDate1" ) ;
103+ input . setValue ( input . getMin ( ) ) ;
102104
103- input = page . getElementByName ( "dtDate2" ) ;
104- input . setValue ( input . getMax ( ) ) ;
105+ input = page . getElementByName ( "dtDate2" ) ;
106+ input . setValue ( input . getMax ( ) ) ;
107+ }
108+ catch ( error2 ) {
109+ logger . debug ( "versuche Alternative aufgrund " + error2 ) ;
110+ logger . debug ( "suche Select exchange" ) ;
111+ boerseSelect = page . getElementByName ( "exchange" ) ;
112+
113+ input = page . getElementByName ( "date-from" ) ;
114+ input . setValue ( input . getMin ( ) ) ;
115+
116+ input = page . getElementByName ( "date-to" ) ;
117+ input . setValue ( input . getMax ( ) ) ;
118+ }
119+
120+ logger . debug ( "suche search-Button" ) ;
121+ searchButton = boerseSelect . getFirstByXPath ( "../../div/button" ) ;
105122 } catch ( error ) {
123+ logger . debug ( "versuche Alternative aufgrund " + error ) ;
106124 // retrieve historic rates for "Zertifikate"
107- Packages . de . willuhn . logging . Logger . debug ( "suche Select historic-prices-stock-market" ) ;
125+ logger . debug ( "suche Select historic-prices-stock-market" ) ;
108126 boerseSelect = page . getElementById ( "historic-prices-stock-market" ) ;
109- Packages . de . willuhn . logging . Logger . debug ( "suche search-Button" ) ;
127+ logger . debug ( "suche search-Button" ) ;
110128 searchButton = page . getElementById ( "request-historic-price" ) ;
111129
112130 input = page . getElementById ( "derivative-historical-start-date" ) ;
@@ -119,7 +137,7 @@ function prepare(
119137
120138 var liste = new ArrayList ( ) ;
121139 if ( ! page ) {
122- Packages . de . willuhn . logging . Logger . error ( "Konnte Kurse Link nicht finden" ) ;
140+ logger . error ( "Konnte Kurse Link nicht finden" ) ;
123141 } else {
124142 // Handelsplätze extrahieren
125143
@@ -132,7 +150,7 @@ function prepare(
132150 liste . add ( cfg ) ;
133151 }
134152
135-
153+ logger . debug ( "extrahierte Handelsplätze: " + liste ) ;
136154 return liste ;
137155}
138156
@@ -153,20 +171,21 @@ function process(config) {
153171 }
154172
155173 if ( ! boerseSelect ) {
156- Packages . de . willuhn . logging . Logger . error ( "Börsenauswahl nicht gefunden" ) ;
174+ logger . error ( "Börsenauswahl nicht gefunden" ) ;
157175 } else {
158176 option = boerseSelect . getOptionByValue ( boerse ) ;
159177 boerseSelect . setSelectedAttribute ( option , true ) ;
160178 }
161179
180+ logger . debug ( "frage Kurse ab..." )
162181 page = searchButton . click ( ) ;
163182 wc . waitForBackgroundJavaScript ( 10000 ) ;
164183 tab = Packages . jsq . tools . HtmlUnitTools . getTableByPartContent ( page , "Datum" ) ;
165184 if ( ! tab ) {
166- Packages . de . willuhn . logging . Logger . error ( "Börsenauswahl nicht gefunden" ) ;
185+ logger . error ( "Börsenauswahl nicht gefunden" ) ;
167186 } else {
168187 list = Packages . jsq . tools . HtmlUnitTools . analyse ( tab ) ;
169- Packages . de . willuhn . logging . Logger . info ( list . size ( ) + " Kurse gefunden" ) ;
188+ logger . info ( list . size ( ) + " Kurse gefunden" ) ;
170189 for ( i = 0 ; i < list . size ( ) ; i ++ ) {
171190 try {
172191 hashmap = list . get ( i ) ;
@@ -208,7 +227,7 @@ function process(config) {
208227 dc . put ( "currency" , currency ) ;
209228 res . add ( dc ) ;
210229 } catch ( error ) {
211- Packages . de . willuhn . logging . Logger . error ( "Fehler beim Kurse auslesen: " + error + "\n" + hashmap ) ;
230+ logger . error ( "Fehler beim Kurse auslesen: " + error + "\n" + hashmap ) ;
212231 }
213232 }
214233 }
@@ -219,7 +238,5 @@ function search(fetch, search) {
219238 fetcher = fetch ;
220239
221240 wc = fetcher . getWebClient ( true ) ;
222- page = wc . getPage (
223- "http://www.finanzen.net/suchergebnis.asp?frmAktiensucheTextfeld=" + search
224- ) ;
241+ page = wc . getPage ( getAktienSucheUrl ( search ) ) ;
225242}
0 commit comments