_StringBetween?

  • Ich möchte aus der Seite
    http://who-is.de/whois.cgi?domain=78.48.141.24

    "address: Germany"
    "descr: ALICE DSL"

    auslesen, nun gibt es aber x mal "address" und "descr".

    Ich habe es bisher immer mit _Stringbetween hinbekommen, aber bei der Seite wird das bissl umständlich.
    Andere Möglichkeiten?!

    Letzendlich möchte ich für verschiedene IP's das Land und den Provider auslesen.

    Gruß

    //Edit:
    Gelöst, mal wieder ein herzliches Dankeschön! :)

    //Edit²:
    Wieder offen x_x

    2 Mal editiert, zuletzt von samy123 (27. März 2009 um 10:37)

  • So z.B.

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    $oIE = _IECreate('http://who-is.de/whois.cgi?domain=78.48.141.24', 0, 0)
    $html = _IEBodyReadHTML($oIE)
    $ahtml = StringSplit($html, @CR)
    MsgBox(0,"",$ahtml[31]&@CRLF&$ahtml[45])

    [/autoit]


    Edit: Hab grad gesehen, dass sich die Informationen bei einer anderen IP-Adresse verschieben, da dort mehr oder weniger Zeilen angegeben werden können, sorry.

  • Stilgar
    Ja, ich hatte auch schon überlegt mit StringRegEx zu arbeiten, aber da seh ich noch nicht wirklich durch ^^
    Wieso die Frage, würdest du eine andere Methode vorziehen?

  • Da ich gesehen habe, dass bei einer anderen IP-Adresse auch andere Informationen (mehr oder weniger Zeilen) angezeigt werden, habe ich mich nun auch die Zeilen unter den gesuchten orientiert, da diese einmalig vorkommen. Hoffe, dass nun immer die richtigen Infos zurückgegeben werden.

    Stilgar: Ich weiß, dass bei meiner Methode dein Firefox zu kurz kommt. :P

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #include <IE.au3>

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

    Local $Verbindung, $Land
    $IP = _GetIP()
    ;~ $IP = '78.48.141.24'

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

    $oIE = _IECreate('http://who-is.de/whois.cgi?domain='&$IP, 0, 0)
    $html = _IEBodyReadHTML($oIE)
    _IEQuit($oIE)
    $ahtml = StringSplit($html, @CR)
    For $i = 1 To UBound($ahtml) -1
    If StringInStr($ahtml[$i], 'country:') Then $Verbindung = StringTrimLeft($ahtml[$i-1], 16)
    If StringInStr($ahtml[$i], 'phone:') Then $Land = StringTrimLeft($ahtml[$i-1], 16)
    Next

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

    MsgBox(0,"",'Verbindung: '&$Verbindung&@CRLF&'Land: '&$Land)

    [/autoit]
  • @samy123:
    Kommt drauf an welche Art an Information du auslesen möchtest.

    Vorschlag:
    Wenn du eine IP abfrägst würde ich erstmal den Teil zwischen "inetnum" und "source" nehmen und daraus
    die "descr" und "country" herausfiltern.

    @ funkey :
    Das war nicht auf FireFox bezogen. Aber nur für den Quelltext, braucht man halt keinen Browser :D

  • Ja schon, aber wie?

    Ich meine die Version von funkey klappt ja wunderbar bei meiner IP, aber eben nicht bei anderen.
    Und anders als die Strings irgendwie Trimmen kann ich doch nix machen oder?

    Ich hab halt auch schon bissl rumprobiert, aber ich komm halt 0 weiter :S

  • Hallo,

    so z.B.:

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #include <String.au3>

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

    Global $sDescr = ""
    Global $IP = "193.254.184.62"

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

    Global $sText = _InetGetSource("http://who-is.de/whois.cgi?domain=" & $IP)
    Global $aText = _StringBetween($sText,"inetnum","source")
    $aText = StringSplit($aText[0],@lf)

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

    For $i = 1 To $aText[0]
    If StringInStr($aText[$i],"descr") Then $sDescr &= _Info($aText[$i]) & @crlf
    If StringInStr($aText[$i],"country") Then $sCountry = _Info($aText[$i])
    Next
    MsgBox(64,"",$sDescr & @crlf & $sCountry)

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

    Exit

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

    Func _Info($sString)
    Return StringStripWS(StringMid($sString,StringInStr($sString,":")+1),3)
    EndFunc

    [/autoit]

    Grüße
    Stilgar