Comments 6
Invoke-WebRequest
?
$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
недостаточно гибок в этом плане, то придется этот метод отбросить. Но все-равно спасибо за ваше разъяснение.
PowerShell: HTML Agility Pack и AngleSharp