Suche nach leicht variierendem Text

  • Hallo,

    ich würde gerne auf Sharepoint Seiten in unserem Intranet nach einer bestimmten Textpassage suchen.
    Das Problem dabei, die Seiten werden dynamisch erzeugt und der Text variiert leicht.

    Bsp:
    Umsatz Januar war 12.000
    Umsatz März war 20.000
    Umsatz April...

    Jetzt möchte ich die Passage von "Umsatz" bis zum Wert rauskopieren.
    Die Werte tauchen nicht im Quelltext auf (nur onscreen).

    Bin für Tipps/Anregungen dankbar! :)
    MfG
    Webfish

    Einmal editiert, zuletzt von Webfish (17. Dezember 2010 um 10:23) aus folgendem Grund: Thema gelöst

  • Hallo WebFish,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu:

    Die Werte tauchen nicht im Quelltext auf (nur onscreen).

    Am besten fragst du den zuständigen Admin ob er dir die Zahlen in einer Datei zur Verfügung stellen kann, sollte ja eigentlich kein Problem sein, da du sie ja auch "onscreen" anschauen darfst. Ansonsten must die Screenshots machen

    [autoit]

    _ScreenCapture_Capture

    [/autoit]

    (und nach einer OCR-Lösung suchen, vielleicht wirst du ja auf AutoItScript.com fündig,

    mfg autoBert

  • herzlich willkommen im Forum und viel Spass mit AutoIt.

    Danke! Werde ich hoffentlich haben :D


    und jetzt zu:
    Zitat von »Webfish« Die Werte tauchen nicht im Quelltext auf (nur onscreen). Am besten fragst du den zuständigen Admin ob er dir die Zahlen in einer Datei zur Verfügung stellen kann, sollte ja eigentlich kein Problem sein, da du sie ja auch "onscreen" anschauen darfst. Ansonsten must die Screenshots machen AutoIt-Quellcode1
    _ScreenCapture_Capture (und nach einer OCR-Lösung suchen, vielleicht wirst du ja auf AutoItScript.com fündig,


    Das mit dem Screenshot machen klingt interessant. Ich werde mal schauen, ob mich das weiterbringt.

    Ich habe es bis jetzt schon geschafft dass der Anfang der Textpassage (Umsatz) gefunden wird. Gibt es eine Möglichkeit den Teil von "Umsatz" bis "Euro" einzulesen? Mir scheint stringbetween geeignet zu sein, aber wie bekomme ich den zu durchsuchenden Text in eine Variable, wenn er nicht im Quelltext steht?

    Viele Grüße

    Webfish

  • Die Werte tauchen nicht im Quelltext auf (nur onscreen).


    Irgendwo müssen die Werte ja herkommen. Wenn das ganze zb über AJAX funktioniert, dann kannst du diese AJAX HTTP Anfrage (die ja vom Script im Intranet abgesendet wird), nachbilden. Das Stichwort ist hier WinHTTP oder TCP.

    Du könntest aber auch versuchen, das ganze über die IE.au3 zu lösen, genauer gesagt über die Funktion

    [autoit]

    _IEBodyReadText()

    [/autoit]


    Vielleicht funktioniert es ja.

    Das auswerten des Textes würdest du im besten Fall mit StringRegExp machen, die Funktion ist genau dafür gemacht.
    Allerdings ist die Handhabung nicht allzu leicht. In meiner, und in der Signatur von BugFix, findest du Tutorials zu dem Thema.

    MfG

  • Vielen Dank für die Tipps! ^^

    Macht Spass mit AutoIt zu experimentieren. Ich bin jetzt soweit das ich den kompletten Text in Notepad oder Word kopiert kriege.
    Was noch fehlt, ist an die gesuchte Passage zu kommen. Ich kenne ja den Anfang (Umsatz) und das Ende (Euro).

    Kann ich die Variable in welcher der Text gespeichert ist, daraufhin durchsuchen? Eignet sich ein Array oder String besser hierfür?

    Viele Grüße
    Webfish

    • Offizieller Beitrag

    Nicht in Word kopieren, sondern intern (in einer Variable) halten und dort verarbeiten (StringRegExp wäre die große Lösung, _StringBetween reicht hier vermutlich aus) :).

    Wenn du uns einen Zwischenstand gibst, können wir dir bestimmt auch gute Tipps zur Optimierung geben :).

    Viel Spaß!
    Johannes

  • Hallo Webfish,

    Zitat

    Umsatz Januar war 12.000

    ist es richtig, dass du den fetten Teil des Textes suchst?
    Wenn das so sein sollte, gibt es maximal 12 mögliche Suchstrings, nämlich die Monatsnamen.
    Schau dir für diesen Fall mal das Programm PushTheButton an. Damit wäre es z.B.möglich, die 12 Texte "Umsatz war Januar","Umsatz war Februar" usw. von der Website einmalig "abzufotografieren", und diese gespeicherten Bilder dann automatisch auf der Website suchen zu lassen.
    Die Suche gestaltet sich relativ zügig, die 12 Monatanamen sind auf einer Website incl. automatischem Scrollen im Browser in weniger als einer Sekunde gefunden.

    /EDIT/ sry, hatte überlesen, dass der Text schon vorliegt

  • Bin wieder ein Stück weiter *freu*

    Der Seiteninhalt wird markiert und in ein Array gelesen, dort kann ich mit _stringBetween den gewünschten Teil auslesen.
    Die Ausgabe danach hat zuerst nicht funktioniert, das Array musste vorher in einen String umgewandelt werden.

    Optimierungswunsch wäre jetzt noch den Fokus auf den Frame im Internet-Explorer zu bekommen.
    Im Moment muss ich mit der Maus vorher noch hineinklicken, sonst markiert er nicht.

    Aber schon jetzt vielen Dank für die bisherige Hilfe! :D
    Webfish

  • Probier ich mal. Danke.

    Bin auf ein weiteres Problem gestossen. Auf einigen Seiten steht der zu suchende Text mehrmals, das stringBetween liefert mir also z.B. 4x das Suchergebnis.
    Kann ich das irgendwie eingrenzen (brauche nur das erste Ergebnis)? ?(

  • Soweit so gut.
    Jetzt habe ich mit "_ArrayUnique" folgendes Ergebnis erzielt:
    Row Col0
    [0] 1
    [1] Text

    Wie bekomme ich denn nun den Text in einen String?
    $Text = _ArrayToString($array[1]) --> macht nix
    $Text = _ArrayToString($array) --> leerer Wert

    ...mühsam ernährt sich das Eichhörnchen :D

  • Klasse!
    Ich bedanke mich für die Einstiegshilfe. Thread kann zu.
    Werde aber bestimmt bald neue Fragen haben... :D