lire HTML via Powershell. Powershell / Sam’s Corner

Obtenir des informations à partir de pages Web via Powershell

 PS1 Dans de nombreux cas, les informations dont nous avons besoin sont disponibles sur une ou plusieurs pages Web, mais nous devons traiter les mêmes informations à plusieurs reprises. Pour automatiser une telle tâche répétée via Powershell, nous devons lire et analyser les données HTML. Par exemple, une question a récemment été publiée sur le forum Microsoft 2010 Sharepoint:

J’aime la façon dont SharePoint 2010 a la page: http://Server:880/_admin/PatchStatus.aspx. Cependant, en regardant cette page, chaque serveur a environ 100 correctifs. Il est difficile de voir si l’un des serveurs manque un correctif ou s’il contient des correctifs que d’autres serveurs n’ont pas. Existe-t-il un moyen d’exporter les informations sur le PatchStatus.page aspx dans l’administrateur central vers une feuille de calcul Excel?

Pour les besoins de cet exercice, disons que nous voulons obtenir les titres des messages de cette URL https://superwidgets.wordpress.com/category/sql

Tout d’abord, lisons dans le code HTML de cette page:

 HTML2

Maintenant, dirigeons-le vers Get-Member pour voir quel type d’objet nous avons et ses méthodes et propriétés disponibles:

 HTML3

Après avoir exploré différentes propriétés de l’objetHTMLHTML que nous avons, et avec quelques connaissances HTML de base, vous pouvez dire que les informations que nous recherchons se trouvent dans le corps HTML.

En utilisant la même technique ci-dessus, nous pouvons explorer d’autres propriétés de l’objet HTML comme « ParsedHTML »

$ HTML.ParsedHtml/Get-Member

Cela montre qu’il s’agit d’un objet HTMLDocumentClass avec des tonnes d’événements, de méthodes et de propriétés:

 HTML7

Liste partielle des événements, méthodes et propriétés d’objets HTMLDocumentClass

Ce qui nous est utile ici, ce sont les 3 méthodes suivantes:

getElementById
getElementsByName
getElementsByTagName

Maintenant que nous savons comment extraire les informations dont nous avons besoin d’une page Web, examinons les spécificités de la page Web à portée de main https://superwidgets.wordpress.com/category/sql. Ouvrez-le dans IE par exemple, appuyez sur F12 pour ouvrir l’explorateur DOM en bas, développez les balises HTML et déplacez la souris sur les balises une par une. Notez que le volet IE supérieur modifie la couleur d’arrière-plan de l’élément sur lequel vous déplacez la souris. Cela nous donne une indication visuelle de quel élément du code HTML représente quel texte ou quelle zone d’une page HTML.

 HTML6

Vous pouvez voir les titres des articles qui nous intéressent sont ceux qui commencent par

< h2 class= »entrée – titre »>

Nous pouvons maintenant écrire les quelques lignes suivantes de code de script Powershell pour terminer la tâche:

 HTML8

# Script pour afficher les titres des publications dans la catégorie SQL du blog Superwidgets
#Sam Boutros – 10/08/2014
URURI = « https://superwidgets.wordpress.com/category/sql/ « 
$ HTML =Invoke-webRequest-Uri $URI
(HTMLHTML.ParsedHtml.getElementsByTagName(‘h2’) / Où {__.className-eq ‘entry-title’ }).innerText

À la ligne 5, nous sélectionnons les éléments HTML par la balise « H2″, filtrons sur className= »entry-title » et sélectionnons la propriété innertext.

La sortie ressemble à ceci:

 HTML9

qui est exactement les titres d’articles que nous avons entrepris d’obtenir.

Ces informations peuvent être traitées, enregistrées, stockées ou reconditionnées dans d’autres rapports HTML, CSV ou autres..

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.