przeczytaj HTML za pomocą Powershell. PowerShell / Sam ’ s Corner

pobieranie informacji ze stron internetowych za pomocą Powershell

PS1 w wielu przypadkach informacje, których potrzebujemy, są dostępne na jednej lub wielu stronach internetowych, ale musimy przetwarzać te same informacje wielokrotnie. Aby zautomatyzować takie powtarzające się zadanie poprzez Powershell musimy odczytać i przeanalizować dane HTML. Na przykład pytanie zostało ostatnio opublikowane na forum Microsoft 2010 Sharepoint:

uwielbiam jak SharePoint 2010 ma stronę: http://Server:880/_admin/PatchStatus.aspx. Jednak patrząc na tę stronę każdy serwer ma około 100 łatek. Przewijanie tej listy jest trudne do sprawdzenia, czy na jednym z serwerów brakuje łatki lub ma łatki, których inne serwery nie mają. Czy istnieje sposób na wyeksportowanie informacji na PatchStatus.strona aspx w centralnym panelu administracyjnym do arkusza kalkulacyjnego excel?

na potrzeby tego ćwiczenia, powiedzmy, że chcemy uzyskać tytuły postów w tym adresie URL https://superwidgets.wordpress.com/category/sql

najpierw przeczytajmy w kodzie HTML tej strony:

HTML2

teraz, Załóżmy, że Get-Member, aby zobaczyć, jakiego rodzaju obiekt mamy i jego dostępne metody i właściwości:

HTML3

po zbadaniu różnych właściwości obiektu $HTML, który mamy, i z pewną wiedzą HTML w tle, możesz powiedzieć, że informacje, których szukamy, znajdują się w treści HTML.

korzystając z tej samej techniki powyżej, możemy zbadać dalsze właściwości obiektu HTML, takie jak „ParsedHTML”

$HTML.ParsedHtml / Get-Member

to pokazuje, że jest to obiekt HTMLDocumentClass z mnóstwem zdarzeń, metod i właściwości:

HTML7

częściowa lista zdarzeń, metod i właściwości obiektu HTMLDocumentClass

przydatne są tutaj następujące 3 metody:

getElementById
getElementsByName
getElementsByTagName

teraz, gdy wiemy, jak wyodrębnić potrzebne informacje ze strony internetowej, spójrzmy na specyfikę strony internetowej pod ręką https://superwidgets.wordpress.com/category/sql. Otwórz go na przykład w IE, naciśnij F12, aby otworzyć Eksplorator DOM na dole, rozwiń znaczniki HTML i przesuń kursor myszy nad znacznikami jeden po drugim. Zwróć uwagę, że górny panel IE zmienia kolor tła elementu, na którym poruszasz myszką. Daje nam to wizualne wskazanie, który element w kodzie HTML reprezentuje który tekst lub obszar strony HTML.

 HTML6

możesz zobaczyć tytuły artykułów, które nas interesują, to te, które zaczynają się od

<h2 class = „entry-title”>

możemy teraz napisać kilka następujących linii kodu skryptu Powershell, aby zakończyć zadanie:

HTML8

# skrypt do wyświetlania tytułów postów w kategorii SQL Superwidgets blog
# Sam Boutros-08/10/2014
$URI = „https://superwidgets.wordpress.com/category/sql/ „
$HTML = Invoke-WebRequest-Uri $URI
($HTML.ParsedHtml.getElementsByTagName (’h2′) | Where{ $_.className-eq 'entry-title’ } ).innerText

w linii 5 wybieramy elementy HTML za pomocą tagu „H2”, filtrujemy ClassName = „entry-title” i wybieramy właściwość innertext.

wyjście wygląda tak:

HTML9

czyli dokładnie te tytuły artykułów, które chcieliśmy uzyskać.

te informacje mogą być dalej przetwarzane, rejestrowane, przechowywane lub przepakowywane w innych raportach HTML, CSV lub innych..

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.