Lue HTML kautta Powershell. Powershell / Sam ’ s Corner

Getting information from web pages via Powershell

PS1monissa tapauksissa tarvitsemamme tiedot löytyvät yhdeltä tai useammalta verkkosivulta, mutta samoja tietoja on käsiteltävä toistuvasti. Automatisoidaksemme tällaisen toistuvan tehtävän PowerShellin kautta meidän täytyy lukea ja jäsentää HTML-tietoja. Esimerkiksi Microsoft 2010 Sharepoint-foorumilla julkaistiin äskettäin kysymys:

I love how SharePoint 2010 has the page: http://Server:880/_admin/PatchStatus.aspx. Kuitenkin, tarkasteltaessa tätä sivua jokainen palvelin on noin 100 laastaria. Vierittämällä tätä luetteloa on vaikea nähdä, puuttuuko joltakin palvelimelta laastari tai onko siinä laastaria, jota muilla palvelimilla ei ole. Onko tapa viedä tiedot PatchStatus.aspx sivu Keski Admin excel-laskentataulukko?

tätä harjoitusta varten sanotaan, että haluamme saada virkojen otsikot tähän URL-osoitteeseen https://superwidgets.wordpress.com/category/sql

ensin luetaan Tämän sivun HTML-koodi:

HTML2

nyt putkitetaan, että saada-jäsen nähdä, millainen objekti meillä on ja sen käytettävissä olevat menetelmät ja ominaisuudet:

HTML3

tutkittuamme $HTML-objektin eri ominaisuuksia, ja jonkin verran HTML: n taustatietoa, voit kertoa, että etsimämme tieto on HTML-kehossa.

käyttämällä yllä olevaa samaa tekniikkaa voimme tutkia HTML-objektin ominaisuuksia, kuten ”ParsedHTML”

$HTML.ParsedHtml / Get-Member

tämä osoittaa, että se on Htmldocument-luokan objekti, jolla on tonneittain tapahtumia, menetelmiä ja ominaisuuksia:

 HTML7

osittainen luettelo Htmldokumenttiluokan oliotapahtumista, menetelmistä ja ominaisuuksista

meille hyödyllisiä ovat seuraavat 3 menetelmää:

getElementById
getElementsByName
getelementssbytagname

nyt kun osaamme poimia tarvitsemamme tiedot verkkosivulta, katsotaan nyt käsillä olevan www-sivun yksityiskohtia https://superwidgets.wordpress.com/category/sql. Avaa se IE: ssä esimerkiksi, paina F12 avataksesi Dom explorer alareunassa, laajenna HTML-tunnisteet ja siirrä hiirtä tagien päälle yksi kerrallaan. Huomaa, että ylin IE-paneeli muuttaa hiirtä siirtävän elementin taustaväriä. Tämä antaa meille visuaalisen osoituksen siitä, mikä HTML-koodin elementti edustaa mitä HTML-sivun tekstiä tai aluetta.

HTML6

artikkelien otsikot alkavat

<h2 class = ”entry-title”>

voimme nyt kirjoittaa seuraavat rivit Powershell-komentosarjakoodia tehtävän suorittamiseksi:

 HTML8

# Script to display titles in the SQL Categroy of Superwidgets blog
# Sam Boutros-08/10/2014
$URI = ”https://superwidgets.wordpress.com/category/sql/ ”
$HTML = Invoke-WebRequest-Uri $URI
($HTML.ParsedHtml.getElementsByTagName (”h2”) / Where {$_.luokan nimi-eq ’entry-title’}).innerText

rivillä 5 valitaan HTML-elementit ”H2” – tagilla, filter on ClassName = ”entry-title” ja valitaan innertext-ominaisuus.

lähtö näyttää tältä:

HTML9

, joka on juuri ne artikkelinimikkeet, joita lähdimme hakemaan.

näitä tietoja voidaan edelleen käsitellä, kirjata, tallentaa tai pakata uudelleen muihin HTML -, CSV-tai muihin raportteihin..

Vastaa

Sähköpostiosoitettasi ei julkaista.