läs HTML via Powershell. Powershell / Sam ’ s Corner

hämta information från webbsidor via Powershell

PS1 i många fall är den information vi behöver tillgänglig på en eller flera webbsidor, men vi måste behandla samma information upprepade gånger. För att automatisera en sådan upprepad uppgift via Powershell måste vi läsa och analysera HTML-data. Till exempel har en fråga nyligen publicerats på Microsoft 2010 Sharepoint forum:

Jag älskar hur SharePoint 2010 har sidan: http://Server:880/_admin/PatchStatus.aspx. Men titta på den här sidan har varje server cirka 100 patchar. Att bläddra igenom den här listan är svårt att se om en av servrarna saknar en patch eller har patchar som andra servrar inte gör. Finns det ett sätt att exportera informationen på PatchStatus.aspx sida i Central Admin till ett excel-kalkylblad?

för syftet med denna övning, låt oss säga att vi vill få titlarna på inläggen i denna URL https://superwidgets.wordpress.com/category/sql

Låt oss först läsa i HTML-koden på denna sida:

HTML2

Låt oss nu Pipa det för att få medlem för att se vilken typ av objekt vi fick och dess tillgängliga metoder och egenskaper:

HTML3

efter att ha utforskat olika egenskaper hos $HTML-objektet Vi har, och med lite HTML-kunskap i bakgrunden, kan du se att informationen vi letar efter finns i HTML-kroppen.

med samma teknik ovan kan vi utforska ytterligare egenskaper hos HTML-objektet som ”ParsedHTML”

$HTML.ParsedHtml / Get-Member

detta visar att det är ett htmldocumentclass-objekt med massor av händelser, metoder och egenskaper:

HTML7

partiell lista över htmldocumentclass objekthändelser, metoder och egenskaper

vad är användbart för oss här är följande 3 metoder:

getElementById
getElementsByName
getElementsByTagName

nu när vi vet hur man extraherar den information vi behöver från en webbsida, låt oss titta på detaljerna på webbsidan till hands https://superwidgets.wordpress.com/category/sql. Öppna den i IE till exempel, slå F12 för att öppna DOM explorer längst ner, expandera HTML-taggarna och flytta musen över taggarna en efter en. Lägg märke till att den övre IE-rutan ändrar bakgrundsfärgen på det element du flyttar musen på. Detta ger oss en visuell indikation på vilket element i HTML-koden som representerar vilken text eller område på en HTML-sida.

HTML6

du kan se artikeltitlarna vi är intresserade av är de som börjar med

<h2 class =”entry-title””>

vi kan nu skriva följande få rader med Powershell-skriptkod för att slutföra uppgiften:

 HTML8

# skript för att visa inlägg titlar i SQL Categroy av Superwidgets blogg
# Sam Boutros-08/10/2014
$URI = ”https://superwidgets.wordpress.com/category/sql/ ”
$HTML = anropa-WebRequest-Uri $URI
($HTML.ParsedHtml.getElementsByTagName (’h2’) | var{ $_.className-eq ’entry-title’}).innerText

i rad 5 väljer vi HTML-element med taggen ”H2”, filtrerar på ClassName = ”entry-title” och väljer innertext property.

utgång ser ut så här:

HTML9

vilket är exakt artikeltitlarna vi bestämde oss för att få.

denna information kan bearbetas, loggas, lagras eller ompaketeras i andra HTML -, CSV-eller andra rapporter..

Lämna ett svar

Din e-postadress kommer inte publiceras.