Hallo ihr lieben,
ich hoffe ihr seid alle gut ins neue Jahr gekommen.
Ich habe mir gestern sowie heute den Kopf zerbrochen und das Internet bemüht und stehe trotzdem auf dem Schlauch.
Mein Vorhaben:
Eine Anwendung schreiben in VB.NET 2012 die wie folgt arbeitet:
Textbox1 (URL-Feld) Inhalt nehmen und von dieser Seite den Quelltext herunterladen und in einer Datei speichern oder die Daten direkt aus der Richttextbox1 nehmen (Es geht bestimmt auch ohne Zwischenspeichern, bin aber erst mal dabei geblieben) - CHECK
# An dieser Stelle könnte ich eigentlich auch schauen, ob ich nicht direkt nur Tabellen herunterlade, oder?
Die Quelldatei nach bestimmten Inhalten durchsucht und mir diese in Textboxen füllt. Der Quellcode des Abschnitts sieht wie folgt aus:
Die gewünschte Ausgabe wäre mir am liebsten:
(Label) Rahmen: (Textbox1.Text=)sportiver Aluminium-Rahmen mit innenverlegter Kabelführung
(Label) Gabel: (Textbox2.Text=)starre Stahlgabel, gerade
etc.
Bedeutet: ich benötigte nur Produktbeschreibung zwischen den <td> </td>
Wie erwähnt, habe ich viel Google bemüht und dachte erst an Regular Expressions. Da kam ich mit:
soweit, dass ich die im Anhang befindliche Ausgabe erhalte. Also zu 50% richtig, wenn mann so will. Wenn ich es schaffen kann, einfach in gleicher Weise die anderen Informationen aus der Tabelle zu ziehen, wäre ich schon zufrieden.
Weitere Google-Recherche hat mir diesen Code rausgespuckt:
Daten aus HTML-Tabelle auslesen.
Die Codeschnipsel sehen sehr vielversprechend aus, nur leider habe ich grade keine Ahnung wie ich mit den Returns, insofern es welche gibt, weiter arbeiten kann. Warscheinlich bin ich einfach nur noch blind.
Ich würde mich freuen, wenn mir jemand helfen könnte.
Edit:
Ich konnte den Code jetzt verkleinern und aufs nötigste reduzieren:
Jetzt habe ich reinen Plaintext den ich filtern muss. Ich hoffe, das macht mehr Sinn.
ich hoffe ihr seid alle gut ins neue Jahr gekommen.
Ich habe mir gestern sowie heute den Kopf zerbrochen und das Internet bemüht und stehe trotzdem auf dem Schlauch.
Mein Vorhaben:
Eine Anwendung schreiben in VB.NET 2012 die wie folgt arbeitet:
Textbox1 (URL-Feld) Inhalt nehmen und von dieser Seite den Quelltext herunterladen und in einer Datei speichern oder die Daten direkt aus der Richttextbox1 nehmen (Es geht bestimmt auch ohne Zwischenspeichern, bin aber erst mal dabei geblieben) - CHECK
# An dieser Stelle könnte ich eigentlich auch schauen, ob ich nicht direkt nur Tabellen herunterlade, oder?
Quellcode
- Private Function getHTML(ByVal Address As String) As String
- Dim rt As String = ""
- Dim wRequest As WebRequest
- Dim wResponse As WebResponse
- Dim SR As StreamReader
- wRequest = WebRequest.Create(URLBOX.Text)
- wResponse = wRequest.GetResponse
- SR = New StreamReader(wResponse.GetResponseStream)
- rt = SR.ReadToEnd
- SR.Close()
- Return rt
- End Function
Die Quelldatei nach bestimmten Inhalten durchsucht und mir diese in Textboxen füllt. Der Quellcode des Abschnitts sieht wie folgt aus:
Die gewünschte Ausgabe wäre mir am liebsten:
(Label) Rahmen: (Textbox1.Text=)sportiver Aluminium-Rahmen mit innenverlegter Kabelführung
(Label) Gabel: (Textbox2.Text=)starre Stahlgabel, gerade
etc.
Bedeutet: ich benötigte nur Produktbeschreibung zwischen den <td> </td>
Wie erwähnt, habe ich viel Google bemüht und dachte erst an Regular Expressions. Da kam ich mit:
Quellcode
- Dim findtext2 As String = "(?<= <td class=""uk-text-bold"">)(.*?)(?=</td>)"
- Dim myregex2 As String = RichTextBox1.Text
- Dim doregex2 As MatchCollection = Regex.Matches(myregex2, findtext2)
- Dim matches2 As String = ""
- For Each match2 As Match In doregex2
- matches2 = matches2 + match2.ToString + Environment.NewLine
- Next
- MsgBox(matches2) 'Results
soweit, dass ich die im Anhang befindliche Ausgabe erhalte. Also zu 50% richtig, wenn mann so will. Wenn ich es schaffen kann, einfach in gleicher Weise die anderen Informationen aus der Tabelle zu ziehen, wäre ich schon zufrieden.
Weitere Google-Recherche hat mir diesen Code rausgespuckt:
Daten aus HTML-Tabelle auslesen.
Die Codeschnipsel sehen sehr vielversprechend aus, nur leider habe ich grade keine Ahnung wie ich mit den Returns, insofern es welche gibt, weiter arbeiten kann. Warscheinlich bin ich einfach nur noch blind.
Ich würde mich freuen, wenn mir jemand helfen könnte.
Edit:
Ich konnte den Code jetzt verkleinern und aufs nötigste reduzieren:
Quellcode
-
- im pos1 As Long
- Dim Pos2 As Long
- Dim Result As String
- Dim request As WebRequest = WebRequest.Create(URLBOX.Text) 'URL Abrufen aus Textbox'
- Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
- Dim Datastream As Stream = response.GetResponseStream
- Dim Reader As New StreamReader(Datastream)
- Dim strData As String = Reader.ReadToEnd
- 'Bereich der gelesen und in die RTB gepackt werden soll'
- pos1 = InStr(strData, "<table class=""uk-table uk-table-hover"">", vbTextCompare)
- Pos2 = InStr(pos1, strData, "</table>", vbTextCompare)
- Result = strData.Substring(pos1, Pos2 - pos1 + 7)
- RichTextBox1.Text = Result
- 'Link "Resize" um Produktnummer aus dem Link erhalten'
- Dim Link As String = Microsoft.VisualBasic.Left(URLBOX.Text, Len(URLBOX.Text) - 12)
- Dim Produktnummer As String = Microsoft.VisualBasic.Right(Link, 8)
- If URLBOX.Text.Trim.Length > 0 Then
- Using StrWriter As New IO.StreamWriter(Produktnummer & ".txt")
- StrWriter.WriteLine(RichTextBox1.Text)
- End Using
- End If
- 'HTML TAGS entfernen'
- Dim html = System.IO.File.ReadAllText(Produktnummer & ".txt")
- Dim tagless As String = StripTags(html)
- RichTextBox1.Text = tagless
Jetzt habe ich reinen Plaintext den ich filtern muss. Ich hoffe, das macht mehr Sinn.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Dionys“ ()