sigisigi
Goto Top

Daten von Webseite Exportieren und In Excel oder Access schreiben mit Automatischen Aktualisierungen

Hallo Zusammen

Bitte flippt nicht gleich aus und verweißt mich auf Google oder sagt ich soll die Suchfunktion benutzten. Den das habe ich schon gemacht. Google liefert nichts brauchbares und die einzigen Artikel hier die auf dieses Thema verweisen sind ungenau beschrieben oder nicht vollendet.

Mein Ziel:

Ich habe mir das ganze so vorgestellt, dass ich Informationen von einer Webseite auslesen kann und Sie mir diese schön strukturiert in ein Excel oder Access File schreibt. (Ja ich kenne die Funktion von Excel die es ermöglicht Daten von Webseiten zu importieren) Funktioniert nur nicht ganz so wie ich mir das vorstelle.
Im Grunde geht es darum, dass ich eine Rangliste exportieren möchte und diese allwöchentlich automatisch Aktualisiert und in eine andere Mappe, Tabelle geschrieben wird.
Ich müsste dann im Grunde nur noch die Tabelle öffnen und auswerten.

Mein Gedanke dahinter war, dass ich für mich selbst eine Statistik machen kann und besser festhalten kann wer sich wie entwickelt hat.

ICH BRAUCHE ES NICHT ZUM BETRÜGEN!!!
Falls jemand daran denkt. Ich möchte sie auf keinen Fall einsetzen um mich selbst zu bereichern.

Falls jemand eine Idee hat wie ich das verwirklichen kann und mir dies Miteilt bin ich sehr Dankbar.
Oder falls jemand doch einen brauchbaren Link zu diesem Thema findet bin ich ebenfalls Dankbar.

Freundliche Grüsse
sigisigi

Content-ID: 228095

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

colinardo
colinardo 29.01.2014 um 18:11:42 Uhr
Goto Top
Hallo sigisigi,
das ist eigentlich kein Problem, kommt immer drauf an wie komplex der Teil ist, den es zu extrahieren gillt. Aber grundsätzlich eine simple Scripting-Aufgabe. Schick doch mal einen Link zur Seite und den Teil den du extrahieren möchtest.
Dir jetzt hier alle nötigen Dingen zu erläutern die du dafür können musst würde den Rahmen hier sprengen. Wenn du etwas Powershell verstehst kann ich dir gerne zeigen wie man damit bestimmte Tags aus Webseiten extrahieren kann.

Grüße Uwe
sigisigi
sigisigi 29.01.2014 um 18:19:16 Uhr
Goto Top
Hallo

http://ch23.staemme.ch/guest.php?screen=ranking

So zu Powershell. Ich habe gerade erst begonnen in meiner Freizeit mir selbst das Powershell beizubringen. Ich komme kaum voran da ich mich momentan noch auf viele weitere Dinge Konzentrieren muss.
Die Ausbildung vordert mich sehr. Und da ich lieber etwas gut mache als 100 Sachen schlecht habe ich das Powershell erstmals beiseite gelassen und meine Kenntnisse sind beinahe gleich "Null"

Ich dachte ich warne dich vor, da es eine Menge Zeit in Anspruch nehmen wird bis ich verstehe was du mir zu erklären versuchst.

sigisigi
colinardo
colinardo 29.01.2014 aktualisiert um 18:22:35 Uhr
Goto Top
brauchst du alle Spieler aus der Ranglisten-Tabelle (also alle Subseiten) oder nur z.B. 1-25 ?
sigisigi
sigisigi 29.01.2014 um 18:30:09 Uhr
Goto Top
Vorzugsweise alle.
colinardo
colinardo 29.01.2014 aktualisiert um 20:50:52 Uhr
Goto Top
Bitteschön ....face-smile
Fürs Beispiel extrahiert es erst mal die ersten 200 Spieler / lässt sich in Zeile 2 des Scripts anpassen (muss ein mehrfaches von 25 sein)
In Zeile 3 wird das Excel-File angegeben in das die Daten in ein neues Sheet importiert werden. Existiert das File noch nicht wird es automatisch erstellt.
(benötigt min. Powershell 3.0)
# Maximal zu extrahierende Anzahl an Spieler(muss durch 25 teilbar sein)
$maxplayers = 200
$pathDataFile = "C:\Daten.xlsx"  
#-----------------
$site = 0
$players = @()
write-host "Lade Seiten und extrahiere die Spieler ..." -BackgroundColor White -ForegroundColor Blue  
for ($i = 0; $i -lt ($maxplayers / 25); $i++){
    $result = Invoke-WebRequest "http://ch23.staemme.ch/guest.php?screen=ranking&mode=player&offset=$site"  
    $table = $result.AllElements | ?{$_.class -eq "lit-item"} | %{$_.innerText}  
    $pos = 0
    for ($x = 0;$x -lt 25; $x++){
        $rang = $table[$pos]
        $name = $table[$pos+1]
        $stamm = $table[$pos+2]
        $punkte = $table[$pos+3]
        $dörfer = $table[$pos+4]
        $punkteschnitt = $table[$pos+5]
        $players += New-Object PSObject -property @{"Rang"=$rang;"Name"=$name;"Stamm"=$stamm;"Punkte"=$punkte;"Dörfer"=$dörfer;"Punkteschnitt"=$punkteschnitt}  
        $pos += 6
    }
   $site += 25
}
$players |select Rang,Name,Stamm,Punkte,Dörfer,Punkteschnitt | export-csv "$env:TEMP\players.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation  

write-host "Füge Daten in Excel-Sheet ein ..." -BackgroundColor Green -ForegroundColor White  
$Excel = new-object -com Excel.Application
$Excel.visible = $false
$Excel.DisplayAlerts = $false
if (Test-Path $pathDataFile){
    $docDaten = $Excel.Workbooks.Open($pathDataFile)
}else{
    $docDaten = $Excel.Workbooks.Add()
    $docDaten.SaveAs($pathDataFile)
}
$docTemp = $Excel.Workbooks.Open("$env:TEMP\players.csv")  
$docTemp.Worksheets.Item(1).Range("A:F").Copy()  
$newSheet = $docDaten.Worksheets.Add()
$newSheet.Name = (get-date -Format "dd.MM.yyyy hh.mm.ss")  
$newSheet.Paste($newSheet.Range("A1"))  
$docTemp.Close($false)
$docDaten.Save()
$Excel.DisplayAlerts = $true
$Excel.visible = $true
Grüße Uwe
sigisigi
sigisigi 30.01.2014 um 20:11:20 Uhr
Goto Top
Du bist der beste =)
Danke dir vielmals.
Ich kann es leider frühstens am Montag Testen =(

Aber dann gebe ich gleich Rückmeldung face-smile

sigisigi
sigisigi
sigisigi 04.02.2014 um 10:04:55 Uhr
Goto Top
Hallo Uwe

Irgendwie klappt es mit dem Script bei mir nicht.
Wenn ich das Script mit Power Shell ausführe passiert ganz kurz etwas und dann ist wieder tote Hose und es wurde kein Excel File erstellt und auch keine anderen Dateien.

Ich weiss diese Erklärung ist sehr ungenau aber die Meldung ist einfach zu schnell wieder weg bevor ich sie mir genauer anschauen kann.

Kommt bei dir auch eine Fehlermeldung?
colinardo
colinardo 04.02.2014 aktualisiert um 10:08:53 Uhr
Goto Top
Irgendwie klappt es mit dem Script bei mir nicht.
(benötigt min. Powershell 3.0) s.o.

Kommt bei dir auch eine Fehlermeldung?
nope, sonst hätte ich es hier nicht gepostet ...

Meldung ist einfach zu schnell wieder weg bevor ich sie mir genauer anschauen kann.
dann führe das Script in einer Konsole aus ...dann siehst du die Fehlerausgabe
sigisigi
sigisigi 04.02.2014 um 12:35:05 Uhr
Goto Top
Super hat nun alles Funktioniert. Der Fehler lag darin das ich noch nicht eingestellt habe, dass das Ausführen von Scripten erlaubt ist.
Funktioniert so wie ich es mir vorgestellt hatte.
Danke dir vielmals.

LG
sigisigi