Эта статья - глава из книги Андрея Попова «Современный PowerShell», вышедшей в издательстве «BHV» в марте этого года. В книге подробно описан язык PowerShell и работа с оболочкой Windows PowerShell в Windows Terminal, взаимодействие с файловой системой, структурированными данными и веб-ресурсами.
Собственно я больше знаком с первой книгой автора "Введение в PowerShell" которую он издал еще в 2009-м. С нее и началось мое вхождение в мир PowerShell. Поэтому книга «Современный PowerShell» мне будет не так интересна как первая, которую она повторяет на 80%. Но надо отдать должное автору, что его подача материала всегда отличается ясностью, практичностью и лаконичностью.
Поэтому сегодня мы вместе с Андреем напишем HTTP-запросы и пропарсим web-страницы через PowerShell.
В интернете есть множество сервисов, с которыми можно работать, обращаясь к их ресурсам по протоколу HTTP. Веб-разработчики постоянно работают с такими HTTP-запросами для доступа к функциям внешних API или для тестирования собственных приложений. PowerShell для обращения к вебу по HTTP предлагает два стандартных командлета: Invoke-WebRequest и Invoke-RestMethod.
КОМАНДЛЕТ INVOKE-WEBREQUEST
С помощью командлета Invoke-WebRequest можно направить веб-серверу HTTP-запрос и получить от него ответ.
Анализ HTML-страниц
Этот командлет хорошо подходит для анализа HTML-страниц. Еще он умеет сохранять страницы на локальном диске. В этом он похож на консольную утилиту wget и даже имеет такой псевдоним:
PS C:\Script> Get-Alias wget
CommandType Name
----------- ----
Alias wget -> Invoke-WebRequest
Обратимся с помощью Invoke-WebRequest к какой-нибудь простой странице, например Example Domain. По умолчанию Invoke-WebRequest выполняет HTTP-запрос с методом GET к ресурсу на веб-сервере, адрес ресурса указывается в качестве значения параметра -Uri. В результате возвращается объект типа HtmlWebResponseObject, в котором хранится информация об ответе сервера:


