Logo faq-o-matic.net
Logo faq-o-matic.net

Weblinks mit Titel per PowerShell ausgeben

von veröffentlicht am9. Dezember 2013, 06:00 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: PowerShell   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Nachdem Nils Kaczenski in URLs als lesbare Blog-Links ausgeben schon eine gute Möglichkeit dargestellt hat, wie man Titel zu einem Weblink auf einfache Weise ermittelt, möchte ich heute noch ergänzend die Möglichkeiten aufzeigen, welche man mit der Windows PowerShell zur Verfügung hat.

Für das Parsen von Webseiten gibt es das Cmdlet Invoke-WebRequest, welches ab PowerShell 3.0 vorhanden ist. Ich werde dafür im Folgenden den Alias iwr benutzen.

Zu beachten ist, dass der Internet Explorer installiert sein muss! Es gibt zwar auch einen iwr Parameter UseBasicParsing, welcher statt der IE Engine die entsprechende .NET Funktion verwendet, jedoch würde uns das bei diesem Szenario nicht zum Ziel führen.

Den Titel einer Webseite kann man über folgende Codezeile anzeigen lassen:

(iwr "http://msdn.microsoft.com/en-us/library/ms714469(v=vs.85).aspx").ParsedHtml.title

Startet man das ganze per Skript, bietet es sich an, über Read-Host den Link über ein Eingabefeld abfragen zu lassen, danach werden über ein ForEach-Object der Titel sowie der Original-Link ausgegeben und wiederum über Piping in die Zwischenablage gelegt. Da es noch kein Clipboard Cmdlet gibt, bietet sich hier das altbekannte clip.exe hervorragend an.

$link = Read-Host "Link"

iwr $link | %{echo $_.ParsedHtml.title $_.BaseResponse.ResponseUri.AbsoluteUri} | clip

Eine andere Möglichkeit wäre das Abspeichern in eine CSV-Datei über Out-File, hierfür wird zwischen den Variablen noch ein Semikolon als Trennzeichen benötigt. Durch das weglassen von echo (Write-Output) wird die Ausgabe als String übergeben.

$link = Read-Host "Link"

iwr $link | %{$_.ParsedHtml.title+";"+$_.BaseResponse.ResponseUri.AbsoluteUri} | Out-File “.\WebLinks.csv” -Append

Statt die CSV-Datei klassisch mit Excel zu öffnen, kann man dafür auch wieder die PowerShell benutzen. Das Ergebnis von Import-Csv, in welchem noch für jede Spalte der Header sowie das Trennzeichen angegeben werden müssen, wird über Piping an Out-GridView gesendet, was eine grafische Ausgabe mit Filter-Funktion ermöglicht.

ipcsv .\WebLinks.csv -Header Titel,Link -Delimiter ";" | ogv

krause-ogv-01

Ein großer Vorteil von iwr sind das objektbasierte Parsen einer Webseite und das dadurch einfache Filtern nach relevanten Informationen, in diesem Falle ein Auslesen aller auf einer Webseite vorhandenen Links mit dem dazugehörigen Titel. Hierdurch werden dann jedoch auch interne Verlinkungen mit angezeigt, welche man durch ein Where-Object herausfiltern kann. Da nicht bei jedem link-Tag auch ein Titel definiert worden ist wird zusätzlich auch der Link-Text (innerText) mit ausgegeben, die Auswahl wird über Select-Object durchgeführt.

(iwr "http://technet.microsoft.com/de-de/").links | ?{$_.href -like "http*"} | select title,innerText,href | ogv

Ich hoffe, dieser Artikel hat aufgezeigt, welche Möglichkeiten die Windows PowerShell mit ihrer Flexibilität und Effizienz bietet, wenn es nötig wird, aus Webseiten Informationen herauszufiltern, diese entweder temporär oder dauerhaft abzuspeichern und ggf. anderweitig zu bearbeiten.

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!