PowerShell: Sitemap.xml auslesen und URLs ermitteln
Moderne Websites besitzen eine Sitemap.xml, welche die URL´s der einzelnen Seiten und Beiträge auflisten. Diese Sitemap lässt sich per PowerShell auslesen.
Warum gibt es eine Sitemap im XML Format?
Moderne Websites listen in einer solchen Sitemap die einzelnen Posts und Seiten auf. Meist gibt es aber für Beiträge eine eigene Sitemap, als auch für normale Seiten oder andere Inhalte. Diese hilft vor allem Suchmaschinen die Inhalte besser zu erfassen und Änderungen schneller zu sichten. Doch nicht nur Suchmaschinen können diese lesen, sondern auch PowerShell kann dazu verwendet werden, die einzelnen URL´s auslesen zu lassen.
Mit PowerShell eine Sitemap.xml auslesen und URLs auflisten
Mit dem PowerShell Cmdlet Invoke-RestMethod
ist es möglich die Sitemap einer Website (inklusiv Untersitemaps) auszulesen, sodass die einzelnen Links aufgelistet werden. Somit erhält man fast den ganzen Inhalt einer Website.
Das PowerShell Script enthält eine Funktion mit dem Namen Get-SitemapLinks, welche die URL der Sitemap übergeben wird. Danach wird die Sitemap geladen und geprüft, ob diese weitere Unter-Sitemaps enthält. Danach wird für jede Liste im XML-Format die Inhalte ausgelesen.
Function Get-SitemapLinks($url) { # get file from URL $sitemap = Invoke-RestMethod $url -UseBasicParsing # check if sitemap is empty or NoFollow if ($sitemap.sitemapindex -ne $null -and !$NoFollow) { # get each single sitemap $sitemap.sitemapindex.sitemap.loc | ForEach-Object { Get-SitemapLinks -url $_ } } # check if sitemap is empty if ($sitemap.urlset -ne $null) { #get only urls without modification date / time $sitemap.urlset.url.loc } } Get-SitemapLinks("https://www.YOURDOMAIN.net/sitemap_index.xml")
Nach dem Ausführen des PowerShell Scripts, werden alle Inhalte der einzelnen Sitemaps geladen und die Links, beziehungsweise URLs dargestellt. Die Sitemap.xml ist somit sehr hilfreich die Inhalte einer Website zu ermitteln.