lesen Sie HTML über Powershell. Powershell / Sam’s Corner

Abrufen von Informationen von Webseiten über Powershell

 PS1In vielen Fällen sind die benötigten Informationen auf einer oder mehreren Webseiten verfügbar, aber wir müssen dieselben Informationen wiederholt verarbeiten. Um eine solche wiederholte Aufgabe über Powershell zu automatisieren, müssen wir HTML-Daten lesen und analysieren. Beispielsweise wurde kürzlich eine Frage im Microsoft 2010 Sharepoint-Forum gepostet:

Ich liebe, wie SharePoint 2010 die Seite hat: http://Server:880/_admin/PatchStatus.aspx. Auf dieser Seite hat jeder Server jedoch ungefähr 100 Patches. Wenn Sie durch diese Liste scrollen, ist es schwierig zu erkennen, ob auf einem der Server ein Patch fehlt oder Patches vorhanden sind, die andere Server nicht haben. Gibt es eine Möglichkeit, die Informationen zum PatchStatus zu exportieren.aspx-Seite in Central Admin zu einer Excel-Tabelle?

Nehmen wir für diese Übung an, wir möchten die Titel der Beiträge in dieser URL abrufen https://superwidgets.wordpress.com/category/sql

Lassen Sie uns zuerst den HTML-Code dieser Seite einlesen:

 HTML2

Lassen Sie uns das nun an Get-Member , um zu sehen, welche Art von Objekt wir haben und welche verfügbaren Methoden und Eigenschaften es hat:

HTML3

Nachdem Sie verschiedene Eigenschaften des $ HTML-Objekts untersucht haben und über einige HTML-Hintergrundkenntnisse verfügen, können Sie feststellen, dass sich die gesuchten Informationen im HTML-Text befinden.

Mit der gleichen Technik können wir weitere Eigenschaften des HTML-Objekts wie „ParsedHTML“ untersuchen“

$ In: HTML.ParsedHtml / Get-Member

Dies zeigt, dass es sich um ein HTMLDocumentClass-Objekt mit unzähligen Ereignissen, Methoden und Eigenschaften handelt:

 HTML7

Teilliste der HTMLDocumentClass-Objektereignisse, -methoden und -eigenschaften

Was uns hier nützlich ist, sind die folgenden 3 Methoden:

getElementById
getElementsByName
getElementsByTagName

Nachdem wir nun wissen, wie wir die benötigten Informationen von einer Webseite extrahieren, schauen wir uns die Besonderheiten der vorliegenden Webseite an https://superwidgets.wordpress.com/category/sql. Öffnen Sie es in IE Drücken Sie beispielsweise F12, um den DOM-Explorer unten zu öffnen, die HTML-Tags zu erweitern und die Maus nacheinander über die Tags zu bewegen. Beachten Sie, dass der obere IE-Bereich die Hintergrundfarbe des Elements ändert, auf das Sie die Maus bewegen. Dies gibt uns einen visuellen Hinweis darauf, welches Element im HTML-Code welchen Text oder Bereich einer HTML-Seite darstellt.

HTML6

Sie können sehen, dass die Artikeltitel, an denen wir interessiert sind, mit beginnen

< h2 class =“Eintrag-Titel“>

Wir können jetzt die folgenden Zeilen Powershell-Skriptcode schreiben, um die Aufgabe abzuschließen:

HTML8

# Skript zum Anzeigen von Beitragstiteln in der SQL-Kategorie von Superwidgets blog
# Sam Boutros – 08/10/2014
$URI = „https://superwidgets.wordpress.com/category/sql/ „
$ HTML = Invoke-WebRequest -Uri $URI
($HTML.ParsedHtml.getElementsByTagName(‚h2‘) / Wobei{ $_.className -eq ‚Eintrag-Titel‘ } ).innerText

In Zeile 5 wählen wir HTML-Elemente nach dem Tag „H2“ aus, filtern nach className = „entry-title“ und wählen die innertext-Eigenschaft.

Die Ausgabe sieht folgendermaßen aus:

 HTML9

Das sind genau die Artikeltitel, die wir uns vorgenommen haben.

Diese Informationen können in anderen HTML-, CSV- oder anderen Berichten weiterverarbeitet, protokolliert, gespeichert oder neu verpackt werden..

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.