Wieso hängt sich das Programm auf?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von mox.

    Wieso hängt sich das Programm auf?

    Hallo, ich schreibe ein kleines Tool womit man Stellenangebote von der JobBörse automatisch ermitteln kann. An sich funktioniert das auch schon recht gut, allerdings hängt sich das Programm einfach auf ab der dritten Seite, aber wieso? Ich bekomme keine Fehlermeldung oder sonst was, was ich aber sagen kann ist das es mit Sicherheit an der Funktion loadJobInfo liegt. Denn wenn ich dies beim umblättern weg lasse funktioniert das alles einwandfrei. Hat jemand eine Idee woran es liegen kann?

    // Edit(Sry code vergessen ^^)

    VB.NET-Quellcode

    1. ​Imports System.Text.RegularExpressions
    2. Imports System.Net
    3. Imports System.Web
    4. Imports System.IO
    5. Public Class Form1
    6. Private email As String
    7. Private name_ As String
    8. Private lastname As String
    9. Private nameTitle As String
    10. Private jobTitle As String
    11. Private jobDesc As String
    12. Private host As String
    13. Private responseHost As String
    14. 'Private WithEvents Webbrowser_ As New WebBrowser
    15. Private Function loadJobInfo(ByVal url As String)
    16. email = Nothing
    17. name_ = Nothing
    18. lastname = Nothing
    19. nameTitle = Nothing
    20. jobTitle = Nothing
    21. jobDesc = Nothing
    22. Dim Request As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
    23. Dim client As New Net.WebClient
    24. Dim str As String = client.DownloadString(url)
    25. Dim myWebRequest As WebRequest = WebRequest.Create(url)
    26. ' Send the 'WebRequest' and wait for response.
    27. Dim myWebResponse As WebResponse = myWebRequest.GetResponse()
    28. host = myWebRequest.RequestUri.Host
    29. responseHost = myWebResponse.ResponseUri.Host
    30. If host = responseHost Then
    31. Dim mail_reg As New Regex("<a id=""vermittlung.stellenangeboteverwalten.detailszumstellenangebot.email"" href=""mailto:.*"" class=""externerLink"" target=""_blank"" title=""Zur Erstellung einer E-Mail. Legt eine neue E-Mail in Ihrem Mailprogramm an, wenn Sie ein Mailprogramm installiert haben""><span>.*</span>")
    32. Dim mail_mat As Match = mail_reg.Match(str)
    33. If mail_mat.Success = True Then
    34. email = mail_mat.Value.Split("<")(2).Split(">")(1)
    35. End If
    36. If str.Contains("Herr") Then
    37. nameTitle = "Herr"
    38. Else
    39. If str.Contains("Frau") Then
    40. nameTitle = "Frau"
    41. Else
    42. nameTitle = "Damen und Herren"
    43. End If
    44. End If
    45. title_lb.Text = "Titel: " & nameTitle
    46. Dim name_reg As New Regex("<span id=""vorname_-2147483648"">.*</span>")
    47. Dim name_mat As Match = name_reg.Match(str)
    48. If name_mat.Success = True Then
    49. name_ = name_mat.Value.Split("<")(1).Split(">")(1)
    50. End If
    51. Dim desc_reg As New Regex("<span id=""stellenbeschreibung"">.*</span>")
    52. Dim desc_mat As Match = desc_reg.Match(str)
    53. If desc_mat.Success = True Then
    54. Dim rep As String = desc_mat.Value.Replace("<span id=""stellenbeschreibung"">", "").Replace("</span>", "").Replace("<br />", "")
    55. rep = rep.Replace("&auml;", "ä")
    56. rep = rep.Replace("&ouml;", "ö")
    57. rep = rep.Replace("&uuml;", "ü")
    58. rep = rep.Replace("&Auml;", "Ä")
    59. rep = rep.Replace("&Ouml;", "Ö")
    60. rep = rep.Replace("&Uuml;", "Ü")
    61. rep = rep.Replace("&szlig;", "ß")
    62. jobDesc = rep
    63. description_txt.Text = jobDesc
    64. End If
    65. Dim lastname_reg As New Regex("<span id=""nachname_-2147483648"">.*</span>")
    66. Dim lastname_mat As Match = lastname_reg.Match(str)
    67. If lastname_mat.Success = True Then
    68. lastname = lastname_mat.Value.Split("<")(1).Split(">")(1)
    69. End If
    70. Dim jobtitle_reg As New Regex("<b>.*</b>")
    71. Dim jobtitle_mat As Match = jobtitle_reg.Match(str)
    72. If jobtitle_mat.Success = True Then
    73. jobTitle = jobtitle_mat.Value.Split("<")(1).Split(">")(1)
    74. jobTitle = jobTitle.Replace("&auml;", "ä")
    75. jobTitle = jobTitle.Replace("&ouml;", "ö")
    76. jobTitle = jobTitle.Replace("&uuml;", "ü")
    77. jobTitle = jobTitle.Replace("&Auml;", "Ä")
    78. jobTitle = jobTitle.Replace("&Ouml;", "Ö")
    79. jobTitle = jobTitle.Replace("&Uuml;", "Ü")
    80. jobTitle = jobTitle.Replace("&szlig;", "ß")
    81. End If
    82. jobtitle_txt.Text = jobTitle
    83. email_lb.Text = "E-Mail: " & email
    84. name_lb.Text = "Vorname: " & name_
    85. lastname_lb.Text = "Nachname: " & lastname
    86. Else
    87. Me.Text = "Externer Server"
    88. End If
    89. End Function
    90. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    91. Webbrowser_.Navigate("https://jobboerse.arbeitsagentur.de" & ListBox1.SelectedItem)
    92. End Sub
    93. Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    94. Webbrowser_.Navigate("https://jobboerse.arbeitsagentur.de/vamJB/stellenangeboteFinden.html")
    95. End Sub
    96. Dim index As Integer = -1
    97. Dim jobList As New List(Of String)
    98. Private Sub Webbrowser__DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles Webbrowser_.DocumentCompleted
    99. Try
    100. Webbrowser_.Document.GetElementById("arbeitsort.ort").InnerText = city_txt.Text
    101. Webbrowser_.Document.GetElementById("stellenangebotesuchen_unten").InvokeMember("click")
    102. Catch ex As Exception
    103. End Try
    104. If Webbrowser_.Document.Url.AbsolutePath = "/vamJB/stellenangeboteFinden.html" Then
    105. index += 1
    106. If Webbrowser_.Document.Url.AbsoluteUri.Contains("_eventId_detailView") Then
    107. Webbrowser_.Document.GetElementById("vorblaettern").InvokeMember("click")
    108. loadJobInfo(Webbrowser_.Document.Url.OriginalString)
    109. Else
    110. index += 1
    111. Dim get_jobID As New Regex("<a id=""zugang.stellenangebotesuchen.ergebnisanzeigedersuchenachstellenangeboten.berufsbezeichnungdesstellenangebots_.*""")
    112. Dim get_jobmat As MatchCollection = get_jobID.Matches(Webbrowser_.DocumentText)
    113. For Each tt As Match In get_jobmat
    114. If tt.Value.Contains("internerLink") Then
    115. jobList.Add(tt.Value.Split(""" href=")(1))
    116. End If
    117. Next
    118. If Webbrowser_.Document.GetElementById("zugang.stellenangebotesuchen.ergebnisanzeigedersuchenachstellenangeboten.berufsbezeichnungdesstellenangebots_0").OuterHtml.Contains("internerLink") Then
    119. Webbrowser_.Document.GetElementById("zugang.stellenangebotesuchen.ergebnisanzeigedersuchenachstellenangeboten.berufsbezeichnungdesstellenangebots_0").InvokeMember("click")
    120. End If
    121. End If
    122. End If
    123. End Sub
    124. End Class

    Mr. Johny schrieb:

    Ohne Fehlermeldung oder sonst was
    Das ist sehr allgemein gehalten...
    Passiert diese Erscheinung im Produktivbetrieb? Sonst gehe einmal in den Debugmodus und steppe diese Routine einmal durch...

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

    downloadstring ist eine sehr sehr bescheidene und sehr schlechte methode um den quellcode einer website zu erhalten und es dauert ewig bis was passiert. in dieser zeit hängt sich da programm auch auf. aber ich weiss jetzte nicht genau ob du dieses problem meinst oder noch ein anderes. ausserdem ist regex nicht so gut zum parsen von html. htmlagilitypack ist das was du brauchst.

    Hier könnte meine Signatur stehen.

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