-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSelenium_Finanzen.bas
155 lines (125 loc) · 5.13 KB
/
Selenium_Finanzen.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
Attribute VB_Name = "Selenium_Finanzen"
' original page is:
' https://github.com/cd84097a65d/Get-Funds-from-ariva.de
' you are free to use/modify/sell this table as you wish
Option Explicit
Const FinanzenNet = "https://www.finanzen.net/"
Const consentUUID = "6e7e9941-db0a-4c19-99a1-1959b6d0e277"
Private SeleniumDriver_finanzen As ChromeDriver
Private seleniumStarted As Boolean
Dim keys As New Selenium.keys
Public cookiesAccepted As Boolean
Function GetFinanzen_Fund(url$, wkn$, development$(), currency_$, country$, benchmark$)
Dim tmpWebElements As WebElements
Dim tmpWebElement As WebElement
Dim tmpString As String
Dim tmpStrings() As String
Dim i%
If SeleniumDriver_finanzen Is Nothing Then
' create new selenium driver
Set SeleniumDriver_finanzen = New ChromeDriver
seleniumStarted = True
End If
' if "finanzen_address" is not empty, then open it
If url = "" Then
' otherwise, find fund according to WKN
Call SeleniumDriver_finanzen.Get(FinanzenNet)
Call Sleep(5000)
AcceptCookies
Set tmpWebElements = _
SeleniumDriver_finanzen.FindElementsByXPath("//div[@id='search']/form/input")
Call tmpWebElements(1).SendKeys(wkn, keys.Enter)
' go to "performance": replace
' https://www.finanzen.net/fonds/green-benefit-global-impact-fund-p-lu1136260384
' with
' https://www.finanzen.net/fonds/performance/green-benefit-global-impact-fund-p-lu1136260384
url = Replace(SeleniumDriver_finanzen.url, "www.finanzen.net/fonds/", _
"www.finanzen.net/fonds/performance/")
Call SeleniumDriver_finanzen.Get(url)
Else
Call Sleep(5000)
Call SeleniumDriver_finanzen.Get(url)
AcceptCookies
End If
' distinguish between fonds and ETFs:
If InStr(1, url, "www.finanzen.net/etf/") > 0 Then
tmpString = FindElementsByXPath(SeleniumDriver_finanzen, "//div[7]/h2", "development")
If InStr(1, tmpString, "Anlageziel") > 0 Then
i = 9
Else
i = 10
End If
currency_ = FindElementsByXPath(SeleniumDriver_finanzen, "//div/div/div[4]/div[2]/div", "Currency")
country = FindElementsByXPath(SeleniumDriver_finanzen, "//div[18]/div/div[2]/div[2]/div[2]", "Country")
' benchmark = FindElementsByXPath(SeleniumDriver_finanzen, "//div[5]/div[2]/div", "Benchmark")
development(1) = CheckValue_prc(FindElementsByXPath(SeleniumDriver_finanzen, "//div[8]/div/table/tbody/tr/td[2]", "3m"))
development(2) = CheckValue_prc(FindElementsByXPath(SeleniumDriver_finanzen, "//div[8]/div/table/tbody/tr/td[3]", "6m"))
development(3) = CheckValue_prc(FindElementsByXPath(SeleniumDriver_finanzen, "//div[8]/div/table/tbody/tr/td[4]", "1yr"))
development(4) = CheckValue_prc(FindElementsByXPath(SeleniumDriver_finanzen, "//div[8]/div/table/tbody/tr/td[5]", "3yrs"))
development(5) = CheckValue_prc(FindElementsByXPath(SeleniumDriver_finanzen, "//div[8]/div/table/tbody/tr/td[6]", "5yrs"))
tmpString = tmpString
Else
tmpString = FindElementsByXPath(SeleniumDriver_finanzen, "//div[2]/table/tbody/tr", "development")
tmpStrings = Split(tmpString, " ")
tmpString = tmpString
If UBound(tmpStrings) >= 3 Then
development(1) = CheckValue(tmpStrings(3))
Else
development(1) = ""
End If
If UBound(tmpStrings) >= 4 Then
development(2) = CheckValue(tmpStrings(4))
Else
development(2) = ""
End If
If UBound(tmpStrings) >= 6 Then
development(3) = CheckValue(tmpStrings(6))
Else
development(3) = ""
End If
If UBound(tmpStrings) >= 8 Then
development(4) = CheckValue(tmpStrings(8))
Else
development(4) = ""
End If
If UBound(tmpStrings) >= 10 Then
development(5) = CheckValue(tmpStrings(10))
Else
development(5) = ""
End If
End If
DoEvents
Call Sleep(RandomRange(5000, 15000))
DoEvents
End Function
' accept cookies
Sub AcceptCookies()
Dim tmpWebElement As WebElement
Dim cookies
If Not cookiesAccepted Then
Call SeleniumDriver_finanzen.Manage.AddCookie("consentUUID", _
consentUUID, "www.finanzen.net")
Call SeleniumDriver_finanzen.Get(SeleniumDriver_finanzen.url)
cookiesAccepted = True
End If
End Sub
Function CheckValue_prc$(inputValue$)
If inputValue = "-" Or inputValue = "" Then
CheckValue_prc = ""
Else
CheckValue_prc = Replace(Split(inputValue, "%")(0), " ", "")
End If
End Function
Function CheckValue$(inputValue$)
If inputValue = "-" Or inputValue = "" Then
CheckValue = ""
Else
CheckValue = inputValue
End If
End Function
Sub CloseSeleniumDriver()
If Not (SeleniumDriver_finanzen Is Nothing) Then
SeleniumDriver_finanzen.Close
SeleniumDriver_finanzen.Quit
End If
End Sub