Как стать автором
Обновить

Комментарии 6

Мне нужно проанализировать локальный файл на языке HTML. `Invoke-WebRequest` — он же, насколько я знаю, загружает файл из указанного URL?

$httpListener = New-Object

System.Net.HttpListener

$httpListener.Prefixes.Add("http://localhost:8080/")

$context = $httpListener.GetContext()$context.Response.StatusCode = 200

$context.Response.ContentType = 'text/HTML'

$WebContent = Get-Content  -Path "C:\test.html" -Encoding UTF8

$EncodingWebContent = [Text.Encoding]::UTF8.GetBytes($WebContent)$context.Response.OutputStream.Write($EncodingWebContent , 0,

$EncodingWebContent.Length)$context.Response.Close()

$Response = Invoke-WebRequest -URI http://localhost:8080

$httpListener.Close()

Спасибо за ваш ответ. Может, дадите какие-нибудь пояснения к этому коду? Я был бы благодарен. Как я понял, вы таким образом предлагаете альтернативу использованию указанных в статье библиотек. У меня нет опыта работы с результатом, возвращаемым командлетом Invoke-WebRequest . Я заглянул в документацию и там сказано, что

Beginning with PowerShell 6.0.0 Invoke-WebRequest supports basic parsing only.

Что значит «basic parsing only»? Это какие-то серьезные ограничения? Мне это важно знать. Этот командлет возвращает объект класса BasicHtmlWebResponseObject. В документации этого класса сказано, что

Response object for html content without DOM parsing

Что значит «without DOM parsing»? Накладывает ли это какие-то ограничения на работу с DOM-деревом? Я собираюсь далее анализировать объект с DOM-деревом. Насколько легко можно будет сделать обход узлов объекта, полученного от командлета Invoke-WebRequest? Есть ли там серьезные ограничения?

В коде мы просто запускаем веб сервер с локально расположенной страницей. И затем уже забираем результат через Invoke-WebRequest

К сожалению на остальную часть вопроса Я вам внятно ответить не смогу. Использовал его только для несложных админских задач.

Я скорее отвечал на ваш комментарий по поводу анализа вэбреквестом именно локального файла

Спасибо за ответ. То, что задействуется локальный веб-сервер, я понял. В данный момент для меня главное — не то, как получить объект с HTML-деревом (с этим я более-менее разобрался), а то, как с ним работать дальше в смысле анализа этого HTML-дерева и отдельных HTML-элементов, их атрибутов. В частности, имен классов CSS. Если Invoke-WebRequest недостаточно гибок в этом плане, то придется этот метод отбросить. Но все-равно спасибо за ваше разъяснение.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации