reverse Anfrage an ein Telefonbuch

  • #include <INet.au3>
    #include <GUIConstants.au3>
    ;

    #cs

    GetTelAdrRev v0.1
    -----------------

    Zielsetzung war eine reverse Anfrage an "www.dasoertliche.de" zu stellen und das Ergebnis mit Hilfe
    von "Regular Expressions" zu parsen.

    Dazu geht das Script hin - "bastelt" eine SEHR bescheidene GUI, die aus einer Reihe von Textfeldern
    und einem Start Button besteht. Nach Eingabe einer vollstaendigen Nummer (Vorwahl und Telefonnummer)
    in das erste Textfeld und anschliessendem betaetigen des "Get..." Buttons, wird eine Anforderung
    mit Hilfe von "_INetGetSource" abgeschickt, deren Ergebnis anschliessend nach den gefundenen
    Informationen "abgeklappert" - geparst wird.

    GetTelAdrRev ist mein erstes kleines Script - also seid gnaedig ;)

    Bei der Gelegenheit:

    "Autoit" ist also soetwas von toll ( the best you can get for free ) -
    vielen Dank an dieser Stelle an alle die dem Projekt Leben einhauchen.

    Nicht vergessen zu erwaehnen moechte ich "olistudent @ #fritzbox" der mir mit dem Pattern und der
    URL auf die Spruenge geholfen hat sowie "peethebee @ #autoit", der meine wohl typischen
    Anfaengerfragen ueber sich ergehen liess...thx buddies in mind

    ralf_reinders@web.de

    PS: Ueber Rückmeldungen, Kritiken sowie Verbesserungsvorschlaege wuerde ich mich sehr freuen...

    #ce

    Dim Const $sVERSION = "GetTelAdrRev v0.1 by ralf_reinders@web.de"

    If (CheckRunningInstance() = 1) Then WinMain()

    Func WinMain()

    Dim $ID_GUI_Form1, $ID_GUI_TB_TelNr, $ID_GUI_TB_Matches, $ID_GUI_TB_Html, $ID_GUI_BT_Run
    Dim $msg, $sTelNr, $sHtml, $sMatches

    $ID_GUI_Form1 = GUICreate ($sVERSION, 320, 240)
    $ID_GUI_TB_TelNr = CreateTextBox("06235 60 21", 10, 10, 300, 20, 1)
    $ID_GUI_TB_Matches = CreateTextBox("", 10, 50, 300, 60, 0, $ES_MULTILINE+$WS_VSCROLL)
    $ID_GUI_TB_Html = CreateTextBox("", 10, 140, 300, 20, 0)
    $ID_GUI_BT_Run = GUICtrlCreateButton("Get...", 65, 190, 200)

    GUISetState ()

    While 1
    $msg = GUIGetMsg()

    Select
    Case $msg = $ID_GUI_BT_Run
    GUICtrlSetData($ID_GUI_TB_Matches, "")
    GUICtrlSetData($ID_GUI_TB_Html, "")

    $sTelNr = GUICtrlRead($ID_GUI_TB_TelNr)

    If GetTelAdrRev($sTelNr, $sMatches, $sHtml) Then
    GUICtrlSetData($ID_GUI_TB_Matches, $sMatches)
    EndIf

    GUICtrlSetData($ID_GUI_TB_Html, $sHtml)
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    EndFunc

    Func GetTelAdrRev($sTelNr, ByRef $sMatches, ByRef $sHtml)

    Dim $i, $aMatches
    Dim $sUrl = "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=" & $sTelNr & "&main=Antwort&s=2"
    Dim $sPattern = '<a class="blb" href="[^"]*"> *([^<]*)</a>(?:<br>(?: )*([^<]*))?</td>*'

    $sHtml = _INetGetSource($sUrl) ; $size = InetGetSize($url)

    If StringLen($sHtml) > 0 Then
    $aMatches = StringRegExp($sHtml, $sPattern, 3) ; flag(3) => "globale Suche"

    If IsArray($aMatches) Then
    $sMatches = ""

    For $i = 1 To UBound($aMatches)
    $sMatches &= $aMatches[$i-1] & @CRLF
    Next
    Return 1
    Else
    Return 0
    EndIf
    Else
    MsgBox(16, $sVERSION, "Keine Rueckgabe")
    EndIf

    EndFunc

    Func CreateTextBox($sTxt, $lLeft, $lTop, $lWidth, $lHeight, $bState, $lExtStyle = 0)

    Dim $ID_TB

    If ($lExtStyle <> 0) Then
    $ID_TB = GUICtrlCreateInput($sTxt, $lLeft, $lTop, $lWidth, $lHeight, $lExtStyle)
    Else
    $ID_TB = GUICtrlCreateInput($sTxt, $lLeft, $lTop, $lWidth, $lHeight)
    EndIf

    GUICtrlSetState($ID_TB, $bState)

    If ($bState = 0) Then
    GUICtrlSetStyle($ID_TB, $ES_READONLY)
    GUICtrlSetBkColor($ID_TB, 0xC0C0C0)
    EndIf

    Return $ID_TB

    EndFunc

    Func CheckRunningInstance()

    If WinExists($sVERSION) Then
    MsgBox(16, $sVERSION, "Eine andere Instanz ist bereits aktiv - Abbruch !!!", 3)
    Return 0
    Else
    AutoItWinSetTitle($sVERSION)
    Return 1
    EndIf

    EndFunc

    Func DebugOut($sString)
    DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sString)
    EndFunc

  • Also - erstmal danke fuer Deinen "Test" - faengt ja schon gut an - direkt ne Fehlfunktion :)

    Bekommst Du auch keine Rückgabe mit der Beispiel-Nummer?

    btw.: Nicht jede existierende Nummer laesst sich auch revers verarbeiten...

    Eventuell liegt es ja auch an eventuellen Formataenderungen beim Kopieren des Quellcodes...

    Bei mir klappt es einwandfrei mit der Beta(v3.1.1.107)

    Bin Anfaenger in Sachen Foren - werde versuchen, den Quellcode irgendwie als "Attachment" zu plazieren. - Oh - sollte mir angewohnen, meine Augen offen zu halten ;)

    Mal schauen, ob das mit dem Attachment klappt...

    P.S.: Firewall?

    Hier noch mal der "nackte" Code...

    Einmal editiert, zuletzt von Knight5 (23. Februar 2006 um 20:58)