Copmbobox (Website) auslesen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Chris213.

    Copmbobox (Website) auslesen

    Hi,

    Ich möchte alle Werte der Comboboxen auf dieser Seite bankenverband.de/waehrungsrechner auslesen und in eine Combobox auf dem Form laden.

    Habe es bis jetzt mit

    VB.NET-Quellcode

    1. browser.Url = New Uri("http://www.bankenverband.de/waehrungsrechner")
    2. For i = 0 To browser.Document.GetElementsByTagName("orgin_currency").Count - 1
    3. KryptonComboBox1.Items.Add(browser.Document.GetElementsByTagName("orgin_currency").Item(i))
    4. Next

    geht aber nicht

    Chris213 schrieb:

    geht aber nicht

    Danke für die Problemmeldung, geht es noch etwas ungenauer ? Was geht nicht ?

    Der Code ist sowieso ziemlicher Schrott, da Du a) x-mal die Collection GetElementsByTagName erzeugst und b) dann noch aus Abkürzungswahn versuchst

    VB.NET-Quellcode

    1. KryptonComboBox1.Items.Add(browser.Document.GetElementsByTagName("orgin_currency").Item(i))

    3 Dinge in einem Statement unterzubringen.

    Erzeug Dir 1x die Collection vor der Schleife (!), weise in der Schleife erst das Item zu und dann pack es in die ComboBox. So wirst Du dann schnell darauf kommen dass das Item was Du erzeugst ein HtmlElement ist. Und mit ein bisschen Überlegung fällt Dir dann auch die Lösung ein ...

    Noch weitere Hilfe bekommst Du wenn Du grundsätzlich Option Strict On aktivierst, und/oder Trace.Writeline einfügst, oder Debugger benutzt ...
    Tut mir leid das ich die Fehlermeldung nicht rein geschrieben habe:

    Der Objectverweis wurde nicht auf eine Objectinstanc festgelegt.


    Option Strict ist bei mir immer auf ON

    UNd tut mir leid das ich nur sehr sehr wenig mit dem webbrowser element arbeite


    Edit:
    Ich habe mal deine Tipps versucht umzusetzten

    VB.NET-Quellcode

    1. Try
    2. browser.Url = New Uri("http://www.bankenverband.de/waehrungsrechner")
    3. Dim test As HtmlElementCollection = browser.Document.GetElementsByTagName("orgin_currency") 'Fehler
    4. For i = 0 To test.Count - 1
    5. comb_von.Items.Add(test.Item(i).GetAttribute("value"))
    6. Next
    7. Catch ex As Exception
    8. MsgBox(ex.Message)
    9. End Try


    Der Fehler ist der gleiche und kommt dort wo ich es angeschrieben habe

    Chris213 schrieb:

    UNd tut mir leid das ich nur sehr sehr wenig mit dem webbrowser element arbeite

    Das braucht Dir nun wirklich nicht leid zu tun ;)

    Änder doch bitte mal den Code so ab wie ich Dir gesagt habe, dann zeigt er Dir ja wenigstens an bei welchem Element die Instanz fehlt.

    Wenn das Dein ganzer Code ist, so tippe ich mal auf das Browser.Document, da Du das Document.Completed Event nicht abgewartet hast.

    Edit: setz mal versuchsweise nach der Url-Zuweisung folgenden Code ein (nicht schön, aber rein zum Testen):

    VB.NET-Quellcode

    1. ' ende des Navigierens abwarten
    2. While browser.ReadyState <> WebBrowserReadyState.Complete
    3. Application.DoEvents()
    4. End While

    Und die Hinweise hast Du so umgesetzt wie ich sie meinte ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kangaroo“ ()

    Also der Fehler mit dem Objekt kommt nicht mehr. Jetzt kommt dieser Fehler der kam vorhin jedoch auch schon (Anhang).
    Außerdem hat die Collection kein Item, dies liegt wahrscheinlich wegen dem Skript fehler
    Bilder
    • screenup_392010131051248.png

      36,02 kB, 456×291, 126 mal angesehen
    Dann liegt es wohl daran dass die Collection

    VB.NET-Quellcode

    1. .GetElementsByTagName("orgin_currency")

    leer ist, dann wird die Schleife nie ausgeführt - oder was meinst Du ?

    Und von einem Tag <orgin_currency> hab ich ehrlich gestanden auch nie gehört ;) Vermutlich eher ein Name oder ein ClassName ...
    So sieht die Combobox aus
    Spoiler anzeigen

    Quellcode

    1. <div class="field">
    2. <select name="orgin_currency">
    3. <option selected="selected" value="USD">
    4. <option value="CHF">Schweizer Franken (CHF)</option>
    5. <option value="GBP">
    6. <option value="JPY">
    7. <option value="EUR">
    8. <option value="-">
    9. <option value="EGP">
    10. <option value="ALL">
    11. <option value="DZD">
    12. <option value="AON">
    13. <option value="ARS">
    14. <option value="AMD">
    15. <option value="AWG">
    16. <option value="AZN">
    17. <option value="ETB">
    18. <option value="AUD">
    19. <option value="BSD">
    20. <option value="BHD">
    21. <option value="BDT">
    22. <option value="BBD">
    23. <option value="BZD">
    24. <option value="BMD">
    25. <option value="BTN">
    26. <option value="BOB">
    27. <option value="BAM">
    28. <option value="BWP">
    29. <option value="BRL">
    30. <option value="GBP">
    31. <option value="BND">
    32. <option value="BGN">
    33. <option value="BIF">
    34. <option value="XOF">
    35. <option value="XAF">
    36. <option value="CLP">
    37. <option value="CNY">
    38. <option value="CRC">
    39. <option value="DKK">
    40. <option value="DOP">
    41. <option value="DJF">
    42. <option value="XCD">
    43. <option value="SVC">
    44. <option value="EEK">
    45. <option value="EUR">
    46. <option value="FKP">
    47. <option value="FJD">
    48. <option value="GMD">
    49. <option value="GEL">
    50. <option value="GHS">
    51. <option value="GIP">
    52. <option value="GTQ">
    53. <option value="GWP">
    54. <option value="GNF">
    55. <option value="GYD">
    56. <option value="HTG">
    57. <option value="HNL">
    58. <option value="HKD">
    59. <option value="INR">
    60. <option value="IDR">
    61. <option value="IQD">
    62. <option value="IRR">
    63. <option value="ISK">
    64. <option value="ILS">
    65. <option value="JMD">
    66. <option value="JPY">
    67. <option value="JOD">
    68. <option value="KYD">
    69. <option value="KHR">
    70. <option value="CAD">
    71. <option value="CVE">
    72. <option value="KZT">
    73. <option value="QAR">
    74. <option value="KES">
    75. <option value="KGS">
    76. <option value="COP">
    77. <option value="KMF">
    78. <option value="CDF">
    79. <option value="HRK">
    80. <option value="CUP">
    81. <option value="KWD">
    82. <option value="LAK">
    83. <option value="LSL">
    84. <option value="LVL">
    85. <option value="LBP">
    86. <option value="LRD">
    87. <option value="LYD">
    88. <option value="LTL">
    89. <option value="MOP">
    90. <option value="MGA">
    91. <option value="MWK">
    92. <option value="MYR">
    93. <option value="MVR">
    94. <option value="MTL">
    95. <option value="MAD">
    96. <option value="MRO">
    97. <option value="MUR">
    98. <option value="MKD">
    99. <option value="MXN">
    100. <option value="MDL">
    101. <option value="MNT">
    102. <option value="MZM">
    103. <option value="MZN">
    104. <option value="MMK">
    105. <option value="NAD">
    106. <option value="NPR">
    107. <option value="NZD">
    108. <option value="NIO">
    109. <option value="NGN">
    110. <option value="ANG">
    111. <option value="KPW">
    112. <option value="NOK">
    113. <option value="OMR">
    114. <option value="PKR">
    115. <option value="PAB">
    116. <option value="PGK">
    117. <option value="PYG">
    118. <option value="PEN">
    119. <option value="PHP">
    120. <option value="PLN">
    121. <option value="RWF">
    122. <option value="RON">
    123. <option value="RUB">
    124. <option value="SBD">
    125. <option value="ZMK">
    126. <option value="WST">
    127. <option value="STD">
    128. <option value="SAR">
    129. <option value="SEK">
    130. <option value="CHF">
    131. <option value="RSD">
    132. <option value="SCR">
    133. <option value="SLL">
    134. <option value="ZWD">
    135. <option value="SGD">
    136. <option value="SKK">
    137. <option value="SOS">
    138. <option value="TJS">
    139. <option value="LKR">
    140. <option value="SHP">
    141. <option value="ZAR">
    142. <option value="SDG">
    143. <option value="KRW">
    144. <option value="SRD">
    145. <option value="SZL">
    146. <option value="SYP">
    147. <option value="TWD">
    148. <option value="TZS">
    149. <option value="THB">
    150. <option value="TOP">
    151. <option value="TTD">
    152. <option value="CZK">
    153. <option value="TND">
    154. <option value="TRY">
    155. <option value="TMM">
    156. <option value="UGX">
    157. <option value="UAH">
    158. <option value="HUF">
    159. <option value="UYU">
    160. <option value="USD">
    161. <option value="UZS">
    162. <option value="VUV">
    163. <option value="VEB">
    164. <option value="AED">
    165. <option value="VND">
    166. <option value="BYR">
    167. <option value="YER">
    168. <option value="XPF">
    169. <option value="CYP">
    170. </select>


    Jedes Element ist so wie CHF aufgebaut.



    Edit:
    ich habe jetzt

    VB.NET-Quellcode

    1. browser.Document.All.GetElementsByName("orgin_currency")

    benutzt dann bekomme ich aber nur den selectierten Eintrag

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Chris213“ ()

    Das schüttel ich in richtiger Form auch nicht einfach aus dem Ärmel. Schau Dir mal den folgenden Code für die Original Currency an, den kannst Du später dann auch in abgewandelter Form auf die "Target Currency" anwenden :
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim WithEvents browser As New WebBrowser
    3. ' form load
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Me.Controls.Add(browser)
    6. browser.Dock = DockStyle.Fill
    7. End Sub
    8. ' button1 clicked
    9. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    10. browser.Url = New Uri("http://www.bankenverband.de/waehrungsrechner")
    11. ' ende des Navigierens abwarten
    12. While browser.ReadyState <> WebBrowserReadyState.Complete
    13. Application.DoEvents()
    14. End While
    15. ' das Element origin currency holen: index (0) von TagName <Select> in der Form
    16. Dim originCurrency As HtmlElement = browser.Document.GetElementById("currentcurrencyform").GetElementsByTagName("Select")(0)
    17. Dim originCurrencyOptions As HtmlElementCollection = originCurrency.GetElementsByTagName("Option")
    18. ' richtige currency holen
    19. Dim found As Boolean = False
    20. Dim currency As String = "GBP" ' hier beliebige Währung einsetzen
    21. For Each element As HtmlElement In originCurrencyOptions
    22. Dim value As String = element.GetAttribute("value")
    23. Trace.WriteLine(value)
    24. If value.Trim <> currency Then Continue For
    25. ' richtige währung gefunden -> auswählen
    26. element.SetAttribute("selected", "selected")
    27. Next
    28. ' prüfen ob gefunden
    29. If found ....
    30. End Sub
    31. End Class