polofahrer
Goto Top

Mit AutoIt Wert aus HTML Tabelle auslesen und verarbeiten

IP-Statistik in unserem LAN mit Internet Explorer aufrufen,
verbrauchtes Volumen für Internettraffic auslesen
Nachrichtenbox soll ab bestimmtem Wert warnen
am Besten in einer Schleife jede Stunde.

Hallo zusammen, ich hoffe ich habs hier richtig platziert.
In meinem Netzwerk ist für jeden Benutzer ein Traffic-Limit für das Internet vergeben.
Um nicht aus versehen, das Limit zu überschreiten, möchte ich ein Programm schreiben, dass automatisch jede Stunde über eine Internetadresse (LAN) eine Statistik ausliest, den Gesamttraffic aus der Tabelle (1.141889) mit einem Schwellenwert vergleicht und ab diesem bestimmten Wert (z.B. 1800 Mb) eine Warnung ausgibt.

Realisierbar ist dies mit AutoIt v3. Ich bin leider Anfänger, habe daher leider keine Ahnung, wie man dieses Script umschreibt, dass es nicht die Formularfelder zählt, sondern die Tabellenzellen.

Vielleicht hilft euch die Funktion:
; *******************************************************
; Example 1 - Open a browser with the table example, get a reference to the second table
;               on the page (index 1) and read its contents into a 2-D array
; *******************************************************
;
#include <IE.au3>
$oIE = _IE_Example ("table")  
$oTable = _IETableGetCollection ($oIE, 1)
$aTableData = _IETableWriteToArray ($oTable)

Vielen Dank für Eure Hilfe!

Liebe Grüße

Euer Polofahrer face-wink


Hier ein Beispiel mit Formularfeldern. Die Anmeldung kann man rausstreichen.
#include <ie.au3>
;Einfaches Beispiel für das Anmelden an Webseiten mit Benutzer und Passwort am Beispiel des Autoit.de-Forums
;Autoit-Version:3.2
 
;Erstellt eine Instanz (neues Fenster) des InternetExplorers und gibt ein entsprechendes Objekt zurück.
$oIE = _IECreate ("http://www.autoit.de/portal.php")  
;Prüfen ob ein Objekt erzeugt wurde
If IsObj($oIE) Then
;warten bis die Seite komplett geladen wurde
_IELoadWait($oIE)
;Erzeugen eines HTML-Formular-Objekts mit Hilfe des Index
;In diesem Beispiel ist das gesuchte Formular, das fünfte in der Webseite. 
$oForm = _IEFormGetCollection ( $oIE, 4 )
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Index
;In diesem Beispiel muss Index 2 verwendet werden, da zwei versteckte Felder index 0 und 1 belegen.
$oUsername = _IEFormElementGetCollection ( $oForm, 2)
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oUsername, "Benutzer")  
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Index
$oPasswd = _IEFormElementGetCollection ( $oForm, 3)
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oPasswd, "Password")  
;Absenden des Formulars
_IEFormSubmit($oForm)

;wenn kein Objekt erzeugt wurde, Fehlermeldung ausgeben.
Else
;Detailierte Fehlerbehandlung überlasse ich einem separaten Tutorial ;)
MsgBox(48,"Erstellen des IE-Objekts fehlgeschlagen","Es konnte keine neue InternetExplorer-Instanz erzeugt werden!")  
EndIf

Die Statistik ist nur intern abrufbar unter http://statistik.xxxxx.de/monatsstat.php und sieht so aus:
<html><head>
<title>Monatsstatistik</title>
</head>
<body>

<H2>Monatsstatistik f&uuml;r 11.2008<br>IP Nummer : xxx.xxx.xxx.xxx </h2><table border="1" bgcolor="#00F500">  

<tr>
   <td>&nbsp; 
   </td>
   <td>Rang
   </td>

   <td>GB Gesamt
   </td>
   <td>GB gesendet
   </td>
   <td>GB empfangen
   </td>
</tr>
<tr>
   <td>Verbindungen ins Internet
   </td>
   <td>1147   </td>

   <td>         1.234333   </td>
   <td>         0.092444   </td>
   <td>         1.141889   </td>
</tr>
<tr>
   <td>Verbindungen &uuml;ber den Proxy
   </td>

   <td>0   </td>
   <td>         0.000000   </td>
   <td>         0.000000   </td>
   <td>         0.000000   </td>

</tr>

<tr>
   <td>Gesamt
   </td>
   <td>1338   </td>
   <td>         1.234333   </td>
   <td>         0.092444   </td>
   <td>         1.141889   </td>
</tr>
</table>
<br>Stand: 24.11.2008 22:49<br></body></html>

Hier gibts Infos zu der Bibliothek: "Internet Explorer Automation Library"

Content-Key: 102577

Url: https://administrator.de/contentid/102577

Printed on: April 19, 2024 at 09:04 o'clock

Member: Polofahrer
Polofahrer Nov 25, 2008 at 14:42:41 (UTC)
Goto Top
Bin noch nicht fertig, aber ich hab das Wichtigste geschafft.
Hier der Code:
#include <IE.au3>
#include <array.au3>
Local $url = 'http://statistik.uni-trier.de/monatsstat.php'  
Local $oIE = _IECreate($url, 0, 0)
Local $oTable = _IETableGetCollection($oIE, 0)
Local $array = _IETableWriteToArray($oTable, True) ; liest Tabelle in einen 2D-Array
;_ArrayDisplay($array) 								; gibt Array auf dem Bildschirm aus -> Messagebox einfügen!
		$traffic = 	$array[3][2]					;soll Gesamttraffic anzeigen: 4.Zeile (Zählung beginnt mit 0, 2.Spalte
		$traffic = StringStripWS ( $traffic, 2 )	;entfernt Leerzeichen u.ä. am Anfang und Ende von $traffic (führt sonst zu Überspringen von if-Abfrage)
		$schwellenwert = 1.000000					
	If $traffic > $schwellenwert Then	;Vergleichsfunktion mit Schwellenwert
		MsgBox(48, "Achtung: Überschreitung um " & @HOUR & ":" & @MIN & ":" & @SEC & "Uhr", "Das Internetkontingent wurde erreicht." & @CR & @CR & "Aktuell: " & $traffic & " Gbyte")	  
			;"& @CR &" Fügt neue Zeile ein in Messagebox    
	ElseIf $traffic <= $schwellenwert Then 
		MsgBox(64, "Gesamttraffic", "Das Limit wurde noch nicht überschritten." & @CR & "Zur Information: Der verbrauchte Traffic beträgt:" & $traffic & " Gbyte")  
	EndIf	
_IEQuit($oIE)                                      ; schließt IE