leggi HTML tramite Powershell. Powershell / Sam’s Corner

Ottenere informazioni dalle pagine web tramite Powershell

PS1 In molti casi, le informazioni di cui abbiamo bisogno sono disponibili su una o più pagine web, ma dobbiamo elaborare ripetutamente le stesse informazioni. Per automatizzare tale attività ripetuta tramite Powershell abbiamo bisogno di leggere e analizzare i dati HTML. Ad esempio, una domanda è stata recentemente pubblicata sul forum di Microsoft 2010 Sharepoint:

Mi piace come SharePoint 2010 ha la pagina: http://Server:880/_admin/PatchStatus.aspx. Tuttavia, guardando questa pagina ogni server ha circa 100 patch. Scorrendo questo elenco è difficile vedere se uno dei server manca una patch o ha patch che altri server non lo fanno. C’è un modo per esportare le informazioni sul PatchStatus.pagina aspx nell’amministratore centrale in un foglio di calcolo Excel?

Ai fini di questo esercizio, diciamo che vogliamo ottenere i titoli dei post in questo URL https://superwidgets.wordpress.com/category/sql

Per prima cosa, leggiamo nel codice HTML di questa pagina:

HTML2

Ora, facciamo pipe che per Get-Member per vedere che tipo di oggetto abbiamo ottenuto e i suoi metodi e proprietà disponibili:

HTML3

Dopo aver esplorato le diverse proprietà dell’oggetto HTML HTML che abbiamo, e con alcune conoscenze HTML di base, puoi dire che le informazioni che stiamo cercando sono nel Corpo HTML.

Usando la stessa tecnica sopra, possiamo esplorare ulteriori proprietà dell’oggetto HTML come “ParsedHTML”

$HTML.ParsedHtml / Get-Member

Questo mostra che si tratta di un oggetto HTMLDocumentClass con tonnellate di eventi, metodi e proprietà:

HTML7

elenco Parziale di HTMLDocumentClass eventi di oggetti, metodi e proprietà

Ciò che è utile a noi, qui, è il seguente 3 metodi:

getElementById
getElementsByName
getElementsByTagName

Ora che sappiamo come estrarre le informazioni di cui abbiamo bisogno da una pagina web, diamo un’occhiata alle specifiche della pagina web a portata di mano https://superwidgets.wordpress.com/category/sql. Aprilo in IE ad esempio, premi F12 per aprire DOM explorer in basso, espandi i tag HTML e sposta il mouse sui tag uno per uno. Si noti che il riquadro superiore di IE cambia il colore di sfondo dell’elemento su cui si sposta il mouse. Questo ci dà un’indicazione visiva di quale elemento nel codice HTML rappresenta quale testo o area di una pagina HTML.

 HTML6

Puoi vedere i titoli degli articoli che ci interessano sono quelli che iniziano con

<classe h2 = “voce-titolo”>

Ora possiamo scrivere le seguenti poche righe di codice di script Powershell per completare l’attività:

 HTML8

# Script per visualizzare i titoli dei post nel Categroy SQL del blog Superwidgets
# Sam Boutros-08/10/2014
UR URI = “https://superwidgets.wordpress.com/category/sql/ “
$HTML = Invoke-WebRequest-Uri UR URI
(HTML HTML.ParsedHtml.getElementsByTagName | ‘h2’) / Dove {_ _ .className-eq ‘entry-title’}).innerText

Nella riga 5 selezioniamo gli elementi HTML dal tag “H2”, filtriamo su className = “entry-title” e selezioniamo la proprietà innertext.

L’output è simile a questo:

HTML9

che è esattamente i titoli degli articoli che abbiamo deciso di ottenere.

Queste informazioni possono essere ulteriormente elaborate, registrate, memorizzate o riconfezionate in altri report HTML, CSV o altri..

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.