Windows PowerShell analysieren lokale HTML-Datei
Möchte ich bauen ein array aus einem HTML-file mit PowerShell.
Verwende ich ein script, das download der HTML-Datei aus dem Mozilla Firefox-Developer Edition (ich bin Download der index-Datei) lokal und ich möchte analysieren, um den Wert der options-Elemente in der select-element, das die id auf id_country.
Ich habe empfohlen, die Verwendung von XPath für das, aber ich kann nicht herausfinden, wie analysieren Sie die Datei und erstellen Sie ein array vom Ergebnis. Vielleicht mit regex könnte ein workaround.
Die HTML-Datei ist hier :
Und ich möchte alle Werte der Optionen, die Elemente hier:
<select aria-required="true" id="id_country" name="country" required="required">
<option value="af">Afghanistan</option>
<option value="al">Albania</option>
<option value="dz">Algeria</option>
<option value="as">American Samoa</option>
<option value="ad">Andorra</option>
...
Ich bin ganz neu mit PowerShell, die ist, warum ich bin nicht wirklich bewusst, von anderen Lösungen, die ich vielleicht in der Lage sein zu verwenden. Ich bräuchte so etwas ganz schnell wie es ist Teil eines Paket-installer.
Grundsätzlich wird das script versuchen, um zu sehen, ob es sich um ein Installationsprogramm, die mit dem Gebietsschema auf dem computer des Benutzers und wenn nicht, wird standardmäßig auf Englisch, das ist, warum ich brauche, um die Werte aus dieser Liste aus, um zu überprüfen, die firefox dev verfügbaren Gebietsschemas.
Grüße,
O
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehe ich nicht ein code-Beispiel, um zu reparieren, also werde ich eins machen.
Wenn es eine remote-html, das ich verwenden würde
Invoke-WebRequest
, aber das funktioniert nicht allzu gut mit lokalen Dateien.Zur Analyse von lokalen Dateien, die ich würde empfehlen, mit HTML-Agility-Pack zum Parsen der HTML-Datei, und verwenden Sie dann xPath, um die Optionen, die Sie suchen. Ex.
Ausgabe:
Wenn Sie mit PS 3.0 oder höher, können Sie die Vorteile von Invoke-WebRequest bei Seiten, die existieren, die auf der web. Wenn Sie in Betrieb sind gegen eine lokale Datei, es kann ein bisschen pingelig.
Invoke-WebRequest gibt eine HtmlWebResponseObject mit einer Eigenschaft namens ParsedHtml. Dieses Objekt hat eine Methode namens getElementById, die wir nutzen können, da wir wissen, dass die id "id_country" auf der select-tag. Von dort aus ist es eine einfache Sache zu Durchlaufen, die Optionen, tags und filter bis zur Rückgabe der Eigenschaften, die wir möchten... "Text" und "Wert".
Beispiel unten gibt ein benutzerdefiniertes Objekt mit dem Namen des Landes und der Land code:
Code:
Ausgabe:
Dann können Sie den Namen des Landes und code als jede andere Eigenschaft auf powershell-Objekten.
Als der web-Endpunkt, es klingt wie Sie, könnte dieses Skript so ändern, zeigen Sie auf das original Mozilla Seite, für die Sie extrahieren diese HTML aus?
Für die meisten HTML -, ist eine weitere option zum laden der Datei im XML-Format und verwenden Sie es auf diese Weise. Ein Beispiel finden Sie in meinem powershell-Becher-Datei downloader:
https://github.com/jefflomax/powershell-download-tumbler-images