Quelltext auslesen

02/03/2012 23:09 dommerle#1
Hey zusammen,

ich brauche ein weiteres Mal eure Hilfe.
Und zwar geht es dieses Mal darum, dass ich aus dem Quelltext dieser Seite:
[Only registered and activated users can see links. Click Here To Register...]
auslesen will, ob ein neuer Eintrag in der Shoutbox vorhanden ist.

Die passende Stelle habe ich schon gefunden.
Einen passenden Befehl wohl ebenfalls, ich weiß allerdings nicht, wie ich meine Idee weiter umsetzen soll... :(

Grüße
02/04/2012 00:18 lolkop#2
hier ein beispiel, wie du alle shoutbox einträge auslesen kannst:
Code:
$content = BinaryToString(InetRead('http://forum.v-minecraft.de'))
$regex = StringRegExp($content, "(?s)username: '<font color=.*?><b>(.*?)<\\/b><\\/font>',.*?time: '(.*?), (.*?)',.*?message: '(.*?)',", 4)
For $i=0 To UBound($regex)-1
	$current = $regex[$i]
	ConsoleWrite(correct('['&$current[2]&' '&$current[3]&'] '&$current[1]&': '&$current[4])&@CRLF)
Next

Func correct($string)
	Return StringRegExpReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace($string,'ü','ü',0,1),'ä','ä',0,1),'ß','ß',0,1),'>','>',0,1),'ö','ö',0,1),'"','"',0,1),'<b>','',0,1),'\/','/',0,1),'</b>','',0,1),'&','&',0,1), '(.*?)<img.*?alt="(.*?)" \/>(.*?)', '$1$2$3')
EndFunc
02/04/2012 12:08 dommerle#3
Das funktioniert ja schonmal super, aber wie gebe ich denn die Daten in einem Fenster aus?
Also welcher Variable sind die denn überhaupt zugeordnet? :S
02/04/2012 13:44 Slorkr4yn#4
Code:
AutoIt-QuellCode
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
;~ Tutorial By AMrK 4 ************* ~;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

$packet =    'GET / HTTP/1.1' & @CRLF & _
            'Host: *deine Webseite*' & @CRLF & _
            'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)' & @CRLF & _
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
            'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF & _
            'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF & _
            'Keep-Alive: 300' & @CRLF & _
            'Connection: keep-alive' & @CRLF & @CRLF

TCPStartup()
$socket = TCPConnect('85.25.142.42', 80)
$bytes = TCPSend($socket, $packet)
ConsoleWrite($bytes & @CRLF)
Do
    $recv = TCPRecv($socket, 1024)
Until $recv <> ""
Do
    $recv &= TCPRecv($socket, 1024)
Until @error Or StringInStr($recv, '</html>')
FileWrite(@ScriptDir & '\test.html', $recv)
TCPCloseSocket($socket)
TCPShutdown()
Das hab ich net selbst geschrieben sonder AMrK von *************!

Der Code lest den Quelltext einer Seite aus, vllt kannst du das so umbauen, dass es deiner Funktion genügt.
02/04/2012 16:10 lolkop#5
Quote:
Originally Posted by dommerle View Post
Das funktioniert ja schonmal super, aber wie gebe ich denn die Daten in einem Fenster aus?
Also welcher Variable sind die denn überhaupt zugeordnet? :S
du siehst doch, wie das ganze in der console ausgegebn wird. war nicht so gedacht das ich dir dein programm schreibe... das ganze ist mehr als proof of concept gedacht. weiterverarbeiten musste das ganze schon selbst.

Edit:
als kleine denkhilfe sei noch gesagt, dass $regex ein pointerarray auf andere arrays ist. jedes einzelne array hat dann folgende belegung:
1 -> Name
2 -> Tag
3 -> Zeit
4 -> Message