citiți HTML prin Powershell. Powershell / colțul lui Sam

obținerea de informații din paginile web prin Powershell

PS1 în multe cazuri, informațiile de care avem nevoie sunt disponibile pe una sau mai multe pagini web, dar trebuie să procesăm aceleași informații în mod repetat. Pentru a automatiza o astfel de sarcină repetată prin Powershell, trebuie să citim și să analizăm datele HTML. De exemplu, o întrebare a fost postată recent pe forumul Microsoft 2010 Sharepoint:

îmi place cum SharePoint 2010 are pagina: http://Server:880/_admin/PatchStatus.aspx. Cu toate acestea, uitându-ne la această pagină, fiecare server are aproximativ 100 de patch-uri. Parcurgerea acestei liste este dificil de văzut dacă unuia dintre servere îi lipsește un patch sau are patch-uri pe care alte servere nu le au. Există o modalitate de a exporta informațiile de pe PatchStatus.pagina aspx din administratorul Central la o foaie de calcul excel?

în scopul acestui exercițiu, să presupunem că vrem să obținem titlurile postărilor din această adresă URL https://superwidgets.wordpress.com/category/sql

în primul rând, să citim în codul HTML al acestei pagini:

HTML2

acum, să pipe că pentru a obține-membru pentru a vedea ce fel de obiect avem și metodele sale disponibile și proprietăți:

HTML3

după explorarea diferitelor proprietăți ale obiectului $HTML pe care îl avem și cu unele cunoștințe HTML de fundal, puteți spune că informațiile pe care le căutăm se află în corpul HTML.

folosind aceeași tehnică de mai sus, putem explora alte proprietăți ale obiectului HTML ca „ParsedHTML”

$HTML.ParsedHtml / Get-Member

acest lucru arată că este un obiect HTMLDocumentClass cu tone de evenimente, metode și proprietăți:

HTML7

lista parțială a evenimentelor, metodelor și proprietăților obiectului HTMLDocumentClass

ce ne este util aici sunt următoarele 3 metode:

getElementById
getElementsByName
getElementsByTagName

acum, că știm cum să extragem informațiile de care avem nevoie dintr-o pagină web, să ne uităm la specificul paginii web la îndemână https://superwidgets.wordpress.com/category/sql. Deschideți-l în IE de exemplu, apăsați F12 pentru a deschide DOM explorer în partea de jos, extindeți etichetele HTML și mutați mouse-ul peste etichete unul câte unul. Observați că panoul IE de sus modifică culoarea de fundal a elementului pe care mutați mouse-ul. Acest lucru ne oferă o indicație vizuală a elementului din codul HTML care reprezintă textul sau zona unei pagini HTML.

 HTML6

puteți vedea titlurile articolelor care ne interesează sunt cele care încep cu

<clasa h2 = „intrare-titlu”>

acum putem scrie următoarele câteva rânduri de cod de script Powershell pentru a finaliza sarcina:

 HTML8

# Script pentru a afișa titluri post în SQL Categorroy de superwidgets blog
# Sam Boutros – 08/10/2014
$ URI = „https://superwidgets.wordpress.com/category/sql/ „
$HTML = Invoke-WebRequest-Uri$URI
($HTML.ParsedHtml.getElementsByTagName | ‘h2′) / unde{ $_.className-EQ’ intrare-titlu’}).innerText

în linia 5 alegem elemente HTML după eticheta „H2”, filtrăm pe ClassName = „entry-title” și selectăm proprietatea innertext.

ieșirea arată astfel:

HTML9

care este exact titlurile articolelor pe care ne-am propus să le obținem.

aceste informații pot fi prelucrate ulterior, înregistrate, stocate sau reambalate în alte rapoarte HTML, CSV sau alte rapoarte..

Lasă un răspuns

Adresa ta de email nu va fi publicată.