Extrahieren von gleichen Codeteilen aus einer Vielzahl ähnlicher HTML-Dateien und Weiterverarbeitung in Excel
Hallo allerseits,
vorweg: meine Frage ist ähnlich zu einer erst kürzlich beantworteten, aber mir wurde nahegelegt einen neuen Thread aufzumachen. Trotzdem verlinke ich das mal, da es evt. hilfreich sein könnte: Daten aus txt-Files sammeln
Hier mein Problem:
Ich habe mir eine Batch geschrieben, die mittels wget alle 10 Minuten ein Image von einer Website lädt und als "nameTT.MM.JJJJHH.MM.SS.html" speichert (dafür hat mein Können noch gereicht ). Die Dateinamen sind nicht exakt gleich lang da sowohl
"size11.03.2017 9-50-30.html" (mit leerzeichen) als auch
"size11.03.201710-00-30.html" (ohne leerzeichen nach 10:00 uhr) rausgekommen sind. Falls man da die Batch abändern muss damit das funktioniert, bin ich da natürlich dabei.
In jeder dieser Dateien existiert nun ein eindeutig identifizierbarer Block namens <span class="text-large" id="quote_size">SIZE</span>, wovon ich die SIZE in Abhängigkeit von Datum und Uhrzeit des Dateinamens in Excel weiterverarbeiten / plotten muss.
Ideal als Output wäre meines Erachtens eine CSV-Datei jeweils mit Datum, Uhrzeit, SIZE pro Input-Datei und Zeile.
Ein Mitglied von administrator.de hat mir bereits einen Lösungsvorschlag geschickt, dieser funktioniert jedoch nicht und ich bin nicht in der Lage rauszufinden warum.
Der Code:
Die daraus resultierende Fehlermeldung:
Vielen vielen Dank im Voraus!!
PS: Ich hoffe ich habe das richtige Subforum getroffen ^^
vorweg: meine Frage ist ähnlich zu einer erst kürzlich beantworteten, aber mir wurde nahegelegt einen neuen Thread aufzumachen. Trotzdem verlinke ich das mal, da es evt. hilfreich sein könnte: Daten aus txt-Files sammeln
Hier mein Problem:
Ich habe mir eine Batch geschrieben, die mittels wget alle 10 Minuten ein Image von einer Website lädt und als "nameTT.MM.JJJJHH.MM.SS.html" speichert (dafür hat mein Können noch gereicht ). Die Dateinamen sind nicht exakt gleich lang da sowohl
"size11.03.2017 9-50-30.html" (mit leerzeichen) als auch
"size11.03.201710-00-30.html" (ohne leerzeichen nach 10:00 uhr) rausgekommen sind. Falls man da die Batch abändern muss damit das funktioniert, bin ich da natürlich dabei.
In jeder dieser Dateien existiert nun ein eindeutig identifizierbarer Block namens <span class="text-large" id="quote_size">SIZE</span>, wovon ich die SIZE in Abhängigkeit von Datum und Uhrzeit des Dateinamens in Excel weiterverarbeiten / plotten muss.
Ideal als Output wäre meines Erachtens eine CSV-Datei jeweils mit Datum, Uhrzeit, SIZE pro Input-Datei und Zeile.
Ein Mitglied von administrator.de hat mir bereits einen Lösungsvorschlag geschickt, dieser funktioniert jedoch nicht und ich bin nicht in der Lage rauszufinden warum.
Der Code:
gci 'c:\ordner\*.html' | ?{(gc $_.Fullname -Raw) -match '<span class="text-large" id="quote_size">(.*?)</span>'} |%{$m = [regex]::match($_.Basename,'([\d\.]+) ([\d\.]+)'); [pscustomobject] @{Datum=$m.Groups[1].Value;Zeit=$mGroups[2].Value;Size=$matches[1].Trim()}} | export-csv 'c:\ordner\ergebnis.csv' -Delimiter ";" -NoType -Encoding UTF8
Die daraus resultierende Fehlermeldung:
Es ist nicht möglich, einen Index auf ein NULL-Array anzuwenden.
In Zeile:1 Zeichen:187
+ ... [\d\.]+)'); [pscustomobject] @{Datum=$m.Groups[1].Value;Zeit=$mGroups ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) , RuntimeException
+ FullyQualifiedErrorId : NullArray
Vielen vielen Dank im Voraus!!
PS: Ich hoffe ich habe das richtige Subforum getroffen ^^
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 331882
Url: https://administrator.de/contentid/331882
Ausgedruckt am: 19.11.2024 um 06:11 Uhr
7 Kommentare
Neuester Kommentar
Ich habe mir eine Batch geschrieben, die mittels wget alle 10 Minuten ein Image von einer Website lädt und als "nameTT.MM.JJJJHH.MM.SS.html" speichert (dafür hat mein Können noch gereicht ). Die Dateinamen sind nicht exakt gleich lang da sowohl
"size11.03.2017 9-50-30.html" (mit leerzeichen) als auch
"size11.03.201710-00-30.html" (ohne leerzeichen nach 10:00 uhr) rausgekommen sind. Falls man da die Batch abändern muss damit das funktioniert, bin ich da natürlich dabei.
"size11.03.201710-00-30.html" (ohne leerzeichen nach 10:00 uhr) rausgekommen sind. Falls man da die Batch abändern muss damit das funktioniert, bin ich da natürlich dabei.
Tja, kein Wunder wenn deine Ursprungsschilderung nur mit der Angabe von
nameTT.MM.JJJJ HH.MM.SS.html
nunja vollkommen falsch war Zusätzlich gibst du dort nämlich zwischen der Zeit Punkte statt Bindestrichen an, wer soll dir da sofort den richtigen Code liefern .
In dem Fall also:
gci 'c:\ordner\*.html' | ?{(gc $_.Fullname -Raw) -match '<span class="text-large" id="quote_size">(.*?)</span>'} |%{
$m = [regex]::match($_.Basename,'(\d{1,2}\.\d{1,2}\.\d{4}) ?(\d{1,2}[:\.-]\d{1,2}[:\.-]\d{1,2})');
if($m.Success){
[pscustomobject] @{Datum=$m.Groups[1].Value;Zeit=$m.Groups[2].Value;Size=$matches[1].Trim()}
}else{
write-host "Dateiname '$($_.Name)' entspricht nicht den Vorgaben!" -F Yellow
}
} | export-csv 'c:\ordner\ergebnis.csv' -Delimiter ";" -NoType -Encoding UTF8
Grüße Uwe