StringinStr Grosses Problem mit String !!!! Wer kann helfen??

  • Hallo Leute,
    ich habe ein problem und komme nicht weiter. Ich habe ein script geschrieben indem ich Stringinstr nutze. Jedoch kann ich nicht nach einem bestimmten String suchen.

    Ich lese den Quelltext meiner Seite aus und möchte aus dem Quelltext ein Link und eine zusätzliche Bild id auslesen. Der String sieht so aus

    "http://www.meinedomain/" "id=bild1" . Wenn ich jetzt mein Quelltext auslese und nach diesem String "http://www.meinedomain/" "id=bild1" suche müsste es folglich so aussehen denke ich.

    Dim $smeinehomepage[1]
    $smeinehomepage = _FFLinksGetAll()
    For $i = 0 to Ubound($smeinehomepage) - 1
    $sMatch = $smeinehomepage[$i][0]
    If StringInStr($sMatch, "http://www.meinedomain/" "id=bild1"" )


    Dies funktioniert leider nicht. Eine Fehlermeldung kommt Error: Missing seperator character after keyword
    ich habe es auch bereits mit 'http://www.meinedomain/" "id=bild1"' versucht jedoch ohne Erfolg.

    Es ist wichtig das der String genau in dieser Form "http://www.meinedomain/" "id=bild1" aus gelesen werden muss
    Ich benötige das um zu checken ob das Bild auf meiner Domain ist oder nicht


    Wie kann ich nach diesem String suchen im Quelltext sieht es ungefähr so aus

    blablabalbalbalbalbalbalbalba "http://www.meinedomain/" "id=bild1" blablabalbalbalbalbalbalbalba

    Über Vorschläge wäre ich sehr sehr dankbar

  • [autoit]

    Global $aMeineHomepage

    [/autoit][autoit][/autoit][autoit]

    $aMeineHomepage = _FFLinksGetAll()

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To Ubound($aMeineHomepage) - 1
    $sMatch = $aMeineHomepage[$i][0]
    If StringInStr($sMatch, '"http://www.meinedomain/" "id=bild1"' ) Then
    ...
    EndIf
    Next

    [/autoit]


    Dafür gibts extra ' und ". Einfach mal in die Hilfe schauen.

  • Hallo m-obi
    Vielen Dank für dein Lösungsvorschlag
    ich abeden lösungsvorschlag ausprobiert. Jedoch bekomme ich eine fehlermeldung

    wenn ich

    Global $aMeineHomepage

    $aMeineHomepage = _FFLinksGetAll()

    For $i = 0 To Ubound($aMeineHomepage) - 1
    $sMatch = $aMeineHomepage[$i][0]
    If StringInStr($sMatch, '"http://www.meinedomain/" "id=bild1"' ) Then
    ...
    EndIf
    Next

    eingebe wird der string nicht gefunden. wenn ich aber den string abkürze sprich If StringInStr($sMatch, "http://www.meinedomain/" ) eingebe dan wird der string feunden. DAs Problem ligt an "id=bild1"


    ich habe mal volgendens probiert


    2
    3
    4
    5
    6
    7
    8
    9
    10


    Global $aMeineHomepage
    $suchstring = '"http://www.meinedomain/" "id=bild1"'
    $aMeineHomepage = _FFLinksGetAll()

    For $i = 0 To Ubound($aMeineHomepage) - 1
    $sMatch = $aMeineHomepage[$i][0]
    If StringInStr($sMatch, $suchstring) Then
    ...
    EndIf
    Next

    dan wird der string leider auch nicht geunfen. gibt es vielleicht eine andere methode bzw eine auskommentierung. Ich möchte genau diesen strin in der gleichen reihenfolge suchen http://www.meinedomain/" "id=bild1"

    Die Funktion extra ' habe ich bereichts probiert jedoch dreht sich alles um den "id=bild1"

    Das skript weiss mit dem im string befindlichen "id= nichts anzufangen.

    Beste grüße

    Bily

  • Dann versuch das Problem doch zu zerlegen.

    Du hast gesagt, dass das nur mit der Domain geht (beachte die zusätzlichen ' ' außen, denn die inneren " scheinen ja wichtig zu sein und müssen dann eingeschlossen werden):

    [autoit]

    $suchstring = '"http://www.meinedomain/"'

    [/autoit]


    Jetzt probierste mal verschiedene Ergänzungen:
    so...

    [autoit]

    $suchstring = '"http://www.meinedomain/"' + ' "'

    [/autoit]


    oder so...

    [autoit]

    $suchstring = '"http://www.meinedomain/"' + ' "' + 'id=bild1' + '"'

    [/autoit]


    oder auch so...

    [autoit]

    $suchstring = '"http://www.meinedomain/" ' + '"' + 'id=bild1' + '"'

    [/autoit]


    Irgendwann wirste ja sehen, wo's plötzlich nix mehr wird, dann haste den Übeltäter... ich kann mir nicht vorstellen, daß das an id= liegen soll...

    BTW, kontrollier mal mit ArrayDisplay, was da wirklich in $aMeinHomepage steht und lies mal hier, vielleicht ist das auch noch relevant...

    Einmal editiert, zuletzt von pandel (15. Juli 2013 um 22:03)

  • Wie kann ich nach diesem String suchen im Quelltext sieht es ungefähr so aus

    blablabalbalbalbalbalbalbalba "http://www.meinedomain/" "id=bild1" blablabalbalbalbalbalbalbalba


    Ausgehend von dieser Vorgabe funktioniert das hier:

    [autoit]

    $sTestString = 'blablabalbalbalbalbalbalbalba "http://www.meinedomain/" "id=bild1" Ha, du Pfeiffe! Mich kriegst mich nie!!!'
    $sSuchString = '"http://www.meinedomain/" "id=bild1"'
    $iSuchStringLen = StringLen($sSuchString)

    [/autoit][autoit][/autoit][autoit]

    $iFound = StringInStr($sTestString, $sSuchString)
    $sResult = StringTrimLeft($sTestString, $iFound + $iSuchStringLen)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "", $sResult)

    [/autoit]

    Sanfte Grüße :D

  • Ok der sstring wird nun gefunden aber findet er jetzt "http://www.meinedomain/" + "id=bild1"
    oder findet er "http://www.meinedomain/" und "id=bild1" ?

    ich meine wir der string nun genau so gefunden "http://www.meinedomain/" "id=bild1"

    Sanfte Grüße :D

  • Ok der sstring wird nun gefunden aber findet er jetzt "http://www.meinedomain/" + "id=bild1"
    oder findet er "http://www.meinedomain/" und "id=bild1" ?

    ich meine wir der string nun genau so gefunden "http://www.meinedomain/" "id=bild1"

    Sanfte Grüße :D


    Was immer du zwischen die einzelnen Anführungszeichen setzt (zB: 'dfklja"sld"sdkf''"sdlkf!"§*#') wird gesucht. Nur wenn du innerhalb eine ungerade Anzahl an ' hast, mußt du auskommentieren, die Wahrscheinlichkeit ist aber eher gering ;)
    Um die Frage zu beantworten, ja, es wird genau dieser String gefunden: "http://www.meinedomain/" "id=bild1"


    Sanfte Grüße :D

  • Muss derstrin dan so aussesehn bei mir klappt das leider nicht

    Global $aMeineHomepage

    $aMeineHomepage = _FFLinksGetAll()

    For $i = 0 To Ubound($aMeineHomepage) - 1
    $sMatch = $aMeineHomepage[$i][0]
    If StringInStr($sMatch, ''"http://www.meinedomain/" "id=bild1"' ) Then
    ...
    EndIf
    Next

  • Muss derstrin dan so aussesehn bei mir klappt das leider nicht

    Global $aMeineHomepage

    $aMeineHomepage = _FFLinksGetAll()

    For $i = 0 To Ubound($aMeineHomepage) - 1
    $sMatch = $aMeineHomepage[$i][0]
    If StringInStr($sMatch, ''"http://www.meinedomain/" "id=bild1"' ) Then
    ...
    EndIf
    Next

    Da ich die FF.au3 UDF noch nie benutzt habe, kann ich dir nur bedingt helfen.
    Ich habe mir die Funktion _FFLinksGetAll() mal kurz angesehen, und ich denke du benutzt den falschen Index:

    [autoit]

    ; #FUNCTION# ===================================================================
    ; Name ..........: _FFLinksGetAll
    ; Description ...: Returns an array with informations about all existing links.
    ; Beschreibung ..: Gibt ein Array mit Informationen über alle vorhandenen Links zurück.
    ; AutoIt Version : V3.3.0.0
    ; Syntax ........: _FFLinksGetAll()
    ; Parameter(s): .:
    ; Return Value ..: Success - 2 dim array with the link informations:
    ; | array[n][0] = href
    ; | array[n][1] = hash
    ; | array[n][2] = search
    ; | array[n][3] = name
    ; | array[n][4] = id
    ; | array[n][5] = text
    ; | array[n][6] = innerHTML
    ; | array[n][7] = target
    ; | array[n][8] = protocol
    ; | array[n][9] = port
    ; Failure - array[0][0] = 0
    ; @ERROR -
    ; Author(s) .....: Thorsten Willert
    ; Date ..........: Tue Sep 22 12:00:34 CEST 2009 @458 /Internet Time/
    ; Link ..........:
    ; Related .......:
    ; Example .......: Yes
    ; ==============================================================================

    [/autoit]


    Du wertest array[n][0] aus. Darin steht aber nur href.
    Ich kenne zwar den Source Code deiner Seite nicht, aber du solltest innerHTML auswerten, also array[n][6].

    Hier mal ein Beispiel (bitte nicht vergessen, dies ist das erste Mal, dass ich diese UDF benutze):

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MustDeclareVars", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $aLinks, $aFound[1] ; kann man auch komplett mit lokalen Variablen lösen, ich finds so aber praktischer :)

    [/autoit] [autoit][/autoit] [autoit]

    _GetAll()
    _FindStuff()

    [/autoit] [autoit][/autoit] [autoit]

    If $aFound[0] > 0 Then
    _ArrayDisplay($aFound)
    Else
    MsgBox(16, "Das war wohl nix!", "Keine Übereinstimmung gefunden.")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetAll()
    _FFStart("http://www.autoit.de/", Default, 0)
    If _FFIsConnected() Then
    $aLinks = _FFLinksGetAll()
    _ArrayDisplay($aLinks)
    EndIf
    EndFunc ;==>_GetAll

    [/autoit] [autoit][/autoit] [autoit]

    Func _FindStuff()
    If IsArray($aLinks) Then ; mußte ich einfügen, da die Funktion (zumindest bei mir) regelmässig kein Ergebnis lieferte, wenn _FFStart ohne Parameter gestartet wurde ($iMode -> 1 = Start new process)
    Local $sSuchString = '"icon/minusS.png" id="' ; dieser String ist einigermassen vergleichbar mit deinem und liefert mehrere Treffer
    Local $iSuchStringLen = StringLen($sSuchString) ; Achtung: soll direkt hinter dem Suchbegriff gefiltert werden, muss $iSuchStringLen um 1 verkleinert werden (bei dir ist dort noch ein Leerzeichen)
    Local $iHit
    Local $a = 1 ; erster Treffer hat Index 1
    ReDim $aFound[UBound($aLinks)] ; das Array sollte mindestens so groß sein, wie die Anzahl aller Treffer

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($aLinks) - 1
    $iHit = StringInStr($aLinks[$i][6], $sSuchString)
    If $iHit Then
    $aFound[$a] = StringTrimLeft($aLinks[$i][6], $iHit + $iSuchStringLen)
    $a += 1
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aFound[$a] ; Größe des Arrays an Treffer anpassen
    ;Trefferanzahl in Index 0 schreiben
    $aFound[0] = $a - 1 ; $a - 1 entspricht UBound($aFound) - 1
    Else
    MsgBox(0, "Fehler", "Die Funktion _FFLinksGetAll() hat mal wieder nix gefunden. Siehe Log in der Konsole...")
    EndIf
    EndFunc ;==>_FindStuff

    [/autoit]


    Ich habs jetzt so gelöst, dass die Trefferanzahl in den Index 0 der Variablen geschrieben wird. Man kann natürlich auch den ersten Treffer in Index 0 schreiben und die Größe des Arrays mit Ubound ermitteln...


    Nachtrag:

    Viel einfacher und schneller geht es ohne FF.au3. Durch deine Vorgabe war ich so fixiert auf die UDF, dass ich die simple Lösung garnicht in Betracht gezogen hatte :wacko:
    Hier das Beispiel von oben mit autoit.de:

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $bHTML = InetRead("http://www.autoit.de/", 1)
    $sHTML = BinaryToString($bHTML)

    [/autoit][autoit][/autoit][autoit]

    $sSuchString = '"icon/minusS.png" id="(.*)'
    $aRegEx = StringRegExp($sHTML, $sSuchString, 3)

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aRegEx)

    [/autoit][autoit][/autoit][autoit]

    Exit

    [/autoit]

    Für deine konkrete Anforderung sollte der RegEx Pattern so aussehn:

    [autoit]

    $sSuchString = '"http://www.meinedomain/" "id=bild1" (.*)'

    [/autoit]

    ...ggf. kann man am Ende noch überflüssige Zeichen abschneiden, je nach Bedarf.

    Sollte das immer noch nicht funktionieren, dann mußt du mal ein bisschen mehr deines Source Codes posten, oder gleich die URL deiner Seite preisgeben...


    Sanfte Grüße :D

  • Hallo funzt leider nicht

    ich brauche eine funktion die diese abgespeckte version vom quellcode findet

    </div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild13" style=""></a><a
    </body>
    </html>

    die funktion soll genau das finden http://www.meine-domain.de/bilder" id="Bild13"

    #include <FF.au3>
    Global $i = 0
    Global $sMatch

    _FFStart("http://www.meine-domain.de")
    sleep(3000)
    _FFOpenUrl("http://www.meine-domain.de/bilder")
    suchestring()

    func suchestring()
    Dim $sstringgefunden[1]
    $sstringgefunden = _FFLinksGetAll()
    Sleep(3000)

    For $i = 0 to Ubound($sstringgefunden) - 1
    $sMatch = $sstringgefunden[$i][0]
    If StringInStr($sMatch, "http://www.meine-domain.de/bilder" id="bild13" ) Then

    MsgBox(0, "string gefunden")

    endfunc

    wie kann man diese funktion schreiben damit http://www.meinedomain/" id="bild13" gefunden wird

    ich habe es mit array versucht aber leider nicht hinbekommen

  • die funktion soll genau das finden http://www.meine-domain.de/bilder" id="Bild13"


    Das ist natürlich was Anderes und total einfach :D
    Ich dachte, du wolltest das finden, was danach folgt. Daher auch in Post #5 mein Beispiel mit "Ha, du Pfeiffe! Mich kriegst mich nie!!!" :wacko:

    Allerdings werde ich FF.au3 nicht anfassen, weil das für die Lösung des Problems zu umständlich, langsam und überfrachtet ist 8)


    So müßte es gehn: (*edit: ab Zeile 33 noch 3 RegEx Varianten hinzugefügt)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3> ;==> nur benötigt für _ArrayDisplay -> kann weg
    #include <String.au3> ;==> nur benötigt für _StringBetween -> kann weg, wenn RegEx benutzt wird

    [/autoit] [autoit][/autoit] [autoit]

    ;$bHTML = InetRead("http://www.meine-domain.de", 1) ;==> hier dann deine URL und Zeilen 9 - 15 auskommentieren/löschen
    ;$sHTML = BinaryToString($bHTML)

    [/autoit] [autoit][/autoit] [autoit]

    $sHTML = '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild1" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild5" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild13" style=""></a><a</body></html>' & _
    'und zwischen durch mal was völlig anderes http meine-domain Bild 08/15' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild117" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild01" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild001" style=""></a><a</body></html>'

    [/autoit] [autoit][/autoit] [autoit]

    Global $aFoundComplete[1]

    [/autoit] [autoit][/autoit] [autoit]

    $sSuchStringStart = 'href="http://www.meine-domain.de/bilder" id="'
    $sSuchStringEnd = '" style='

    [/autoit] [autoit][/autoit] [autoit]

    $aFound = _StringBetween($sHTML, $sSuchStringStart, $sSuchStringEnd) ; nur die Bildnummer anzeigen

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aFoundComplete[UBound($aFound)]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($aFound) - 1
    $aFoundComplete[$i] = 'href="http://www.meine-domain.de/bilder" id="' & $aFound[$i] & '"'
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aFound) ;==> Nur die Bildnummer
    _ArrayDisplay($aFoundComplete) ;==> kompletter Suchstring

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"RegEx", "Achtung, jetzt kommt RegEx!")

    [/autoit] [autoit][/autoit] [autoit]

    ;==> mit RegEx ist das Ganze natürlich am kompaktesten ;)
    $sSuchStringRegExNum = 'href="http://www.meine-domain.de/bilder" id="Bild(\d*)'
    $sSuchStringRegExBildNum = 'href="http://www.meine-domain.de/bilder" id="(Bild\d*)'
    $sSuchStringRegExAll = 'href="http://www.meine-domain.de/bilder" id="Bild\d*'

    [/autoit] [autoit][/autoit] [autoit]

    $aRegExNum = StringRegExp($sHTML, $sSuchStringRegExNum, 3)
    $aRegExBildNum = StringRegExp($sHTML, $sSuchStringRegExBildNum, 3)
    $aRegExAll = StringRegExp($sHTML, $sSuchStringRegExAll, 3)

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aRegExNum) ;==> RegEx Suchstring Nummer
    _ArrayDisplay($aRegExBildNum) ;==> RegEx Suchstring Bild/Nummer
    _ArrayDisplay($aRegExAll) ;==> RegEx Suchstring komplett

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit]


    Sanfte Grüße :D


    Ps: Sollte es jetzt immer noch nicht funktionieren, verlange ich Schmerzensgeld :rofl:

  • sehr toll werde es morgen mal ausprobieren und mich wieder melden: WEnn es nicht klappt gibts schmerzensgeld :rofl:

  • Hallo Friesel,
    vielen dank für die lösungsvorschläage. Ich glaube an dieser Stelle gibt es SChmerzensgeld :)

    Die Lösung mit _StringBetween hört sihc sehr gut an. Ich habe es probiert mann kann den gefunden string auch mit TrimLeftauch eingrenzen.

    Aber endweder bin ich zu blöd oder ich habe ein Falsche Tastatur!!

    Würde es nochmal versuchen wenn es geht.

    Also ich öffne meine domain mit _FFStart("www.meine-domain.de)
    dan gehe ich auf meine Bildermit _FFOpenUrl("http://www.meine-domain.de/bilder")

    jetzt möchte ich das auf der Aktuellen Seite http://www.meine-domain.de/bilder den Quelltext auslesen und dan mit _StringBetween .

    den Quelltext anwenden _StringBetween soll hier starten href="http://www.meine-domain.de/bilder" id="
    und hier enden " style='

    wenn zwischen anfang und Ende eine Zahl oder Buchstabe oder zeichen gefunden wird, dann soll er ein ordner auf demdesktop erstellen und den gefunden inhalt als text dokument abspeichern.

    Deine idee mit $sHTML = ist auch gut. Der Quelltext müsste aber per hand dort reingeschrieben werden. Deshalb wäre es schön wenn der Quelltext einfach ausgelesen werden und mit _StringBetween gefunden würde. Es ist Quasi eine überprüfung. Zum Beispiel

    der Quelltext der Aktuellen Seite wird ausgelesen und innerhalb der Start- und Endpunkt von _StringBetween wird geprüft ob ein text oder Zahl oder ein zeichen drin ist

    Ich kann leider mit Array nichts anfangen. Ich habe bereits den Quelltext auslesen können und konnte _stringBetween anwenden und den String auch trimen. aber den getrimmten String konnte ich nicht weiterverarbeiten. Ich hoffe du kannst helfen. Liebe grüße Bily

  • Schau dir nochmal Friesels Script an und lies bitte mal die Kommentare die er dort hinterlassen hat. Du hast komplett überlesen wie das ganze funktioniert wie man an deinem Beitrag sieht. Da du nicht in der Lage bist eine URL zu dieser omniösen Webseite rauszurücken, oder einfach mal den entsprechenden Quellcode zur Verfügung zu stellen (was mich sowieso stutzig macht), muss er sich das selbst zusammendichten um sein Script überhaupt testen zu können.
    Das ist nichts anderes als Faulheit. Wenn sich schon so viele Leute bemühen dir zu helfen, obwohl du scheinbar so wichtig bist, dass das ganze erst mal in der SB gepusht werden musste, kannst du wenigstens sein Script einmal durchlesen.
    Wenn du keine Lust hast selbst etwas anderes zu machen, als Lösungsvorschläge auszusortieren obwohl sie funktionieren würden, dann geh bitte in dieses Forum: "Programmieranfragen/Ohne Gegenleistung".

    Zitat

    Ich kann leider mit Array nichts anfangen.

    Dann lerne doch einfach etwas damit anzufangen...

  • Schau dir nochmal Friesels Script an und lies bitte mal die Kommentare die er dort hinterlassen hat. Du hast komplett überlesen wie das ganze funktioniert wie man an deinem Beitrag sieht. Da du nicht in der Lage bist eine URL zu dieser omniösen Webseite rauszurücken, oder einfach mal den entsprechenden Quellcode zur Verfügung zu stellen (was mich sowieso stutzig macht), muss er sich das selbst zusammendichten um sein Script überhaupt testen zu können.
    Das ist nichts anderes als Faulheit. Wenn sich schon so viele Leute bemühen dir zu helfen, obwohl du scheinbar so wichtig bist, dass das ganze erst mal in der SB gepusht werden musste, kannst du wenigstens sein Script einmal durchlesen.
    Wenn du keine Lust hast selbst etwas anderes zu machen, als Lösungsvorschläge auszusortieren obwohl sie funktionieren würden, dann geh bitte in dieses Forum: "Programmieranfragen/Ohne Gegenleistung".

    Dann lerne doch einfach etwas damit anzufangen...


    Du hast das falsch verstanden glaube ich ich. ICh habe die Beiträge gelesen jedoch sind in den Beiträgen mehre Lösungsvorschläge die mich dan durcheinander gebracht haben.
    Ich kann sehr wohl was mit Array anfangen. Ich kann den String leider nur in einer Msgbox anzeigen lassen als Quelltext kannst du nehmen was du willst ich nehme jetzt mal den Quelltext von Autoit.de

    der sieht nähmlich so aus

    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$aRegExNum</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">=</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…p.htm%5B/url%5D"><span style="color:#000090;font-weight:bold;font-style:italic;font-size:92%">StringRegExp</span></a><span style="color:#FF0000;font-weight:bold;font-size:92%">(</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$sHTML</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">,</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$sSuchStringRegExNum</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">,</span><span style="color:#AC00A9;font-weight:bold;font-style:italic;font-size:92%">3</span><span style="color:#FF0000;font-weight:bold;font-size:92%">)</span>
    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$aRegExBildNum</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">=</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…p.htm%5B/url%5D"><span style="color:#000090;font-weight:bold;font-style:italic;font-size:92%">StringRegExp</span></a><span style="color:#FF0000;font-weight:bold;font-size:92%">(</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$sHTML</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">,</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$sSuchStringRegExBildNum</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">,</span><span style="color:#AC00A9;font-weight:bold;font-style:italic;font-size:92%">3</span><span style="color:#FF0000;font-weight:bold;font-size:92%">)</span>
    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$aRegExAll</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">=</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…p.htm%5B/url%5D"><span style="color:#000090;font-weight:bold;font-style:italic;font-size:92%">StringRegExp</span></a><span style="color:#FF0000;font-weight:bold;font-size:92%">(</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$sHTML</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">,</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$sSuchStringRegExAll</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">,</span><span style="color:#AC00A9;font-weight:bold;font-style:italic;font-size:92%">3</span><span style="color:#FF0000;font-weight:bold;font-size:92%">)</span>

    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…y.htm%5B/url%5D"><span style="color:#0080FF;font-weight:bold;font-style:italic;font-size:92%">_ArrayDisplay</span></a><span style="color:#FF0000;font-weight:bold;font-size:92%">(</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$aRegExNum</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">)</span><span style="color:#009933;font-style:italic;font-size:92%">;==&gt; RegEx Suchstring Nummer</span>
    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…y.htm%5B/url%5D"><span style="color:#0080FF;font-weight:bold;font-style:italic;font-size:92%">_ArrayDisplay</span></a><span style="color:#FF0000;font-weight:bold;font-size:92%">(</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$aRegExBildNum</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">)</span><span style="color:#009933;font-style:italic;font-size:92%">;==&gt; RegEx Suchstring Bild/Nummer</span>
    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…y.htm%5B/url%5D"><span style="color:#0080FF;font-weight:bold;font-style:italic;font-size:92%">_ArrayDisplay</span></a><span style="color:#FF0000;font-weight:bold;font-size:92%">(</span><a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#AA0000;font-weight:bold;font-size:92%">$aRegExAll</span></a><span style="color:#0000FF;font-weight:bold;font-size:92%"></span><span style="color:#FF0000;font-weight:bold;font-size:92%">)</span><span style="color:#009933;font-style:italic;font-size:92%">;==&gt; RegEx Suchstring komplett</span>

    <a style="text-decoration:none;" target="AutoItDocs" href="https://autoit.de/%5Burl%5Dhttp:…s.htm%5B/url%5D"><span style="color:#0000FF;font-weight:bold;font-size:92%">Exit</span></a></pre>
    </td>
    </tr>
    </table>
    </div>
    </div></div>

    </div>
    </blockquote><br />
    <br />
    <br />
    Sanfte Grüße <img src="wcf/images/smilies/biggrin.png" alt=":D" /><br />
    <br />
    <br />
    Ps: Sollte es jetzt immer noch nicht funktionieren, verlange ich Schmerzensgeld <img src="wcf/images/smilies/23.gif" alt=":rofl:" /></div>
    </div>
    <div class="messageFooter">
    <div class="smallButtons">
    <ul id="postButtons338612">
    <li class="extraButton"><a href="#top" title="Zum Seitenanfang"><img src="wcf/icon/upS.png" alt="" title="Zum Seitenanfang" /><span class="hidden">Zum Seitenanfang</span></a></li>
    </ul>
    </div>
    </div>
    <hr />
    </div>
    </div>

    <script type="text/javascript">


    jetzt versuche ich aus diesem aktuellen Quelltext etwas mit _StringBetween von einem Star- und Endpunkt zu suchen. Nehmen wir mal das Beispiel von oben.
    Der Starpunkt soll sein:
    Ps: Sollte es jetzt immer noch nicht funktionieren, verlange ich Schmerzensgeld
    Der Endpunkt soll sein: Zum Seitenanfang

    nun soll mittels _StringBetween geprüft werden ob als beispiel
    src="wcf/icon/upS.png" alt= zwischen Star- und Endpunkt exestiert.

    Wenn ja soll ein ordner auf dem Desktop erstellt werden und der gefunden String in einer Textdatei gespeichert werden.

    Ich habe es soweit gekommen das ich ein String mit _StringBetween und TErimLeft eingrenzen und mittels einer Massagebox mir habe anzeigen lassen. Ich kann leider den getrimmten String nicht weiterverarbeiten.


    ich habe es nach dem Lösungsvorschlag versucht

    #include <FF.au3>
    #Include <String.au3>

    _FFStart("http://www.autoit.de/index.php?form=PostAdd&threadID=41892", 2, True)

    If _FFIsConnected() Then

    $HTML = _FFReadHTML()

    $a = _StringBetween($HTML, "Ps: Sollte es jetzt immer noch nicht funktionieren, verlange ich Schmerzensgeld", "Zum Seitenanfan")
    endif

    $b = StringTrimLeft($a[0], 43)

    MsgBox(97, "Test", $b)

  • Zitat von bilythekids

    Ich kann leider mit Array nichts anfangen.

    Zitat von bilythekids

    Ich kann sehr wohl was mit Array anfangen.


    ... Und du willst ernsthaft mir die Schuld geben, wenn ich dich falsch verstehe?

    Ist ja auch egal. Du hast scheinbar komplett ignoriert was ich in meinem Beitrag geschrieben habe, außer der Bemerkung, dass du den Umgang mit Arrays erlernen solltest.
    Denkst du es hat hier irgendwem geholfen, den Quelltext der Seite hier reinzupasten?
    Ich verstehe nicht, wieso du jetzt wieder mit der FF.au3 anfängst. Es reicht für dein Vorhaben bereits aus den Quelltext der Seite direkt abzurufen, wie Friesel es gemacht hat. Dafür musst du nicht den Firefox fernsteuern.
    Da du eine potenzielle Lösung deines Problems in Friesels Script und eine Anleitung es zu verstehen in meinem letzten Beitrag findest, ziehe ich mich mal wieder aus diesem Thread zurück. Mein Hinweis scheint ja nichts bewirkt zu haben.

    Und statt das ganze in pastebin Links auszulagern könntest du auch einfach anfangen deine Texte mit [spoiler] [code] und [autoit] Tags zu versehen. Es reicht bereits die entsprechende Stelle zu markieren und auf einen der Buttons über dem Texteditor zu klicken.

  • Eins gleich vorweg:
    Ich muß name22 in allen Punkten Recht geben...

    Ich denke aber, dein "Problem" ist nicht die Faulheit, sondern dein Unwissen.
    Wenn du wirklich aufmerksam meine Skripte und kommentare gelesen hast wie du sagst, hast du so gut wie nichts verstanden, weil dir offensichtlich die Grundlagen fehlen.

    Ich selber habe erst vor ca. einem 3/4 Jahr angefangen zu Programmieren (siehe Anmeldedatum), dabei aber sehr viel Wert auf die Grundlagen gelegt. Daher wage ich zu behaupten, die meisten "Standard-Probleme" lösen und die meisten "Standard-Fragen" beantworten zu können.
    Es wird dir bestimmt nicht schaden, das eine oder andere Tutorial durchzuarbeiten und ein paar kleine Programme zu schreiben.

    Mittlerweile bin ich allerdings auch davon überzeugt, dass es sich bei der besagten Seite nicht um deine Eigene handelt.
    Solltest du einfach nur Bilder von verschiedenen Seiten rippen wollen, installiere dir einfach das Firefox AddOn ImageHost Grabber. Das lädt so ziemlich alles an Bildern runter, sogar von solchen Hostern, die dich erstmal mit Span zumüllen bevor sie ein Bild preisgeben...

    Mein letztes Skript aus Beitrag #13 ist "Standalone". Du hättest einfach nur die URL der Seite einfügen müssen, wie in den Kommentaren beschrieben. Eine Verwendung der FF.au3 UDF ist nicht erforderlich.

    Wie auch immer, hier mein allerletzter Versuch am Beispiel dieses Threads (unbedingt Kommentare im Skript lesen!!!):

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3> ;==> nur benötigt für _StringBetween -> kann weg, wenn RegEx benutzt wird

    [/autoit] [autoit][/autoit] [autoit]

    $bHTML = InetRead("http://www.autoit.de/index.php?page=Thread&threadID=41892", 1) ;==> Liest den Scourcecode der angegebenen URL in binärer Form aus
    $sHTML = BinaryToString($bHTML) ;==> Umwandlung in Stringform

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("HTML-Source", 1000, 600, Default, Default, 12582912) ;==> Fenster erstellen, um anzuzeigen, was in der Variblen $sHTML steht -> wird nicht benötigt
    GUICtrlCreateEdit("", 0, 0, 1000, 600, 3152064) ;==> hier kommts rein
    GUICtrlSetData(-1, $sHTML)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ;==> Beispiel für _StringBetween ==================

    [/autoit] [autoit][/autoit] [autoit]

    ;==> diese Suchbegriffe machen in diesem Thread keinen Sinn, können aber für "deine" Seite aktiviert werden
    ;$sSuchStringStart = 'href="http://www.meine-domain.de/bilder" id="'
    ;$sSuchStringEnd = '" style='
    ;<==

    [/autoit] [autoit][/autoit] [autoit]

    ;==> daher exemplaisch alle Links zu Javascript Dateien herausfiltern (auskommentieren/löschen, wenn obige Suchbegriffe benutzt werden)
    $sSuchStringStart = 'type="text/javascript" src="'
    $sSuchStringEnd = '"></script>'
    ;<==

    [/autoit] [autoit][/autoit] [autoit]

    $aFound = _StringBetween($sHTML, $sSuchStringStart, $sSuchStringEnd) ;==> erstellt ein ARRAY mit allen gefundenen Übereinstimmungen --> hast du in deinem "Versuch" als normale Variable behandelt, was nicht funktioniert

    [/autoit] [autoit][/autoit] [autoit]

    $aRegExUnique = _ArrayUnique($aFound) ;==> entfernt doppelte Einträge, falls vorhanden
    _ArrayDisplay($aFound) ;==> dient nur der Anzeige der Treffer
    ;<=================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==> Beispiel für StringRegExp ====================
    $sSuchStringRegEx = 'Bild\d{1,}' ;==> findet alles, was mit "bild" gefolgt von einem beliebigen ganzzahligem Wert im Sourcecode zu finden ist (Groß-/Kleinschreibung wird ignoriert)
    $aRegEx = StringRegExp($sHTML, $sSuchStringRegEx, 3) ;==> erstellt ein Array mit allen gefundenen Übereinstimmungen
    $aRegExUnique = _ArrayUnique($aRegEx) ;==> entfernt doppelte Einträge, falls vorhanden
    _ArraySort($aRegExUnique) ;==> Kommentar überflüssig ;)
    _ArrayDisplay($aRegExUnique, "$aRegExAll") ;==> dient nur der Anzeige der Treffer
    ;<=================================================

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit]


    Weitere Hilfe gibts nur gegen Sourcecode oder Orginal URL.
    Auf Stochern im Dunkeln hab ich keine Lust mehr...


    Sanfte Grüße :D

    Ps: als Schmerzensgeld spende bitte einen beliebigen Betrag an eine beliebige Hilfsorganisation 8)