Hallo miteinander,
ich verseuche einen Webseite auszulesen, einige Dinge habe ich auch schon hin bekommen, wahrscheinlich mehr Zufall als verstand.
Leider ist die Seite per Passwort geschützt und ich kann euch keinen Link zur Seite weitergeben.
daher habe ich hier einen HTML Schnipsel der Seite
<tr>
<td><strong>Produkt</strong></td>
<td>
XXXXXXXXX
xxxxxxx, XXXXXXXXXXXXXXXX
</td>
</tr>
<tr>
<td><strong>Beschreibung1</strong></td>
<td>YYYYYYYYYY, YYYYYYYYYYYY</td>
</tr>
<tr>
Alles anzeigen
ich möchte die XXXXXX und die YYYY auslesen.
also habe ich folgendes gemacht.
1. HTML Code lesen
2. Gesuchte Dinge in eine Variable schreiben lassen
#include <Array.au3>
#include <MsgBoxConstants.au3>
$String = _
"<td><strong>Produkt</strong></td>" & @CRLF & @LF & _
" <td>" & @CRLF & @LF & _
" TEST" & @CRLF & @LF & _
" für die, Ausgabe" & @CRLF & @LF & _
" </td>" & @CRLF & @LF & _
" <tr>" & @CRLF & @LF & _
" <td><strong>Beschreibung1</strong></td>" & @CRLF & @LF & _
" <td>Test 2, in einer Zeile</td>" & @CRLF & @LF & _
" </tr>"
$fProdukt = StringRegExp($String, "<td><strong>Produkt</strong></td>\s*<td>(\d+)</td>", 3)
$fBeschreibung1 = StringRegExp($String, "<td><strong>Beschreibung1</strong></td>\s*<td>(.*)</td>", 3)
If IsArray($fProdukt) Then ; Wenn Array dann
_ArrayDisplay ($fProdukt, "Array = $fBeschreibung1")
Else ; Wenn kein Array dann
MsgBox (0, "Kein Array !", "$fProdukt = " & $fProdukt)
EndIf
If IsArray($fBeschreibung1) Then ; Wenn Array dann
_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
Else ; Wenn kein Array dann
MsgBox (0, "Kein Array !", "$fBeschreibung1 = " & $fBeschreibung1)
EndIf
Alles anzeigen
dann lasse ich mir das ausgeben.
If IsArray($fProdukt) Then ; Wenn Array dann
ConsoleWrite ("$Produkt[0] = " & $fProdukt[0])
$Produkt = $fProdukt[0]
_ArrayDisplay ($fProdukt, "Array = $fProdukt")
Else ; Wenn kein Array dann
ConsoleWrite ("$Produkt = " & $fProdukt)
$Produkt = $fProdukt
EndIf
If IsArray($fBeschreibung1) Then ; Wenn Array dann
$Beschreibung1 = $fBeschreibung1[0]
ConsoleWrite ("$Beschreibung1[0]) = " & $fBeschreibung1[0])
_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
Else ; Wenn kein Array dann
$Beschreibung1 = $fBeschreibung1
ConsoleWrite ("$Beschreibung1 = " & $fBeschreibung1)
EndIf
Alles anzeigen
Bei Beschreibung1 klappt das beim dem Produkt hingegen nicht.
ich gehe davon aus das es an den Zeilenumbrüchen liegt.
Wenn ich in der Info nachlese (StringRegExp.htm) dann kann ich dort folgendes Finden.
(?s) "." findet alle Zeichen, auch Zeilenumbrüche (als Standard findet "." keine Zeilenumbrüche).
. Findet jedes einzelne Zeichen (außer Zeilenumbrüche).
Also habe ich mit dem . dem ? dem * und dem s alle möglichen Kombinationen ausprobiert doch es klappt nichts ;-(.
Könnte mir da jemand weiterhelfen?
gruß Mücke
EDIT: ich habe mir jetzt den teil in ein keinen Code gepackt.
so kann ich meine Suchkriterien testen ohne immer mein ganzen Code laufen lasen zu müssen.
jedoch klappt es noch immer nicht.
#include <Array.au3>
#include <MsgBoxConstants.au3>
$String = _
"<td><strong>Produkt</strong></td>" & @CRLF & @LF & _
" <td>" & @CRLF & @LF & _
" TEST" & @CRLF & @LF & _
" für die, Ausgabe" & @CRLF & @LF & _
" </td>" & @CRLF & @LF & _
" <tr>" & @CRLF & @LF & _
" <td><strong>Beschreibung1</strong></td>" & @CRLF & @LF & _
" <td>Test 2, in einer Zeile</td>" & @CRLF & @LF & _
" </tr>"
$fProdukt = StringRegExp($String, "<td><strong>Produkt</strong></td>\s*<td>(\d+)</td>", 3)
$fBeschreibung1 = StringRegExp($String, "<td><strong>Beschreibung1</strong></td>\s*<td>(.*)</td>", 3)
If IsArray($fProdukt) Then ; Wenn Array dann
_ArrayDisplay ($fProdukt, "Array = $fBeschreibung1")
Else ; Wenn kein Array dann
MsgBox (0, "Kein Array !", "$fProdukt = " & $fProdukt)
EndIf
If IsArray($fBeschreibung1) Then ; Wenn Array dann
_ArrayDisplay ($fBeschreibung1, "Array = $fBeschreibung1")
Else ; Wenn kein Array dann
MsgBox (0, "Kein Array !", "$fBeschreibung1 = " & $fBeschreibung1)
EndIf
Alles anzeigen
ich möchte mir das TEST für die, Ausgabe ausgeben lassen am besten sogar in einer Zeile Ohne den Zeilenumbruch, wobei ich für den Anfang mit irgend einem Ergebnis schon zufrieden wäre.
was mache ich in Zeile 15
1. ich such die Übereinstimmung "<td><strong>Produkt</strong></td>"
2. dann sage ich das alle zeichne folgen können auch Zeilenumbrüche und Sonderzeichen ausgeschaltet "\s*"
3. ich suche die Übereinstimmung "<td>"
4. jetzt kommt die Suche dich ich ausgeben möchte, da müsste dann drin stehen, alle Zeichen auch Zeilenumbrüche und Sonderzeichen ausschalten
5. ich suche die Übereinstimmung "</td>"
ich habe den Eindruck das Punkt 4 bei mir nicht richtig ist.
Arrrrr..... warum will das nicht in meinen Schädel rein wie das geht.
Gruß Mücke