powershell網絡蜘蛛解決亂碼問題
時間:2020-01-28來源:系統城作者:電腦系統城
抓?。ㄅ廊。┚W上信息的腳本程序,俗稱網絡蜘蛛。
powershell中自帶了這樣的兩個命令,【Invoke-WebRequest】和【Invoke-RestMethod】,但這兩個命令有時候會亂碼。
現在轉帖分享, 某個【歪果仁】寫的腳本。來源于 墻外出處: https://gist.github.com/angel-vladov/9482676
核心代碼
- function Read-HtmlPage {
- param ([Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)][String] $Uri)
-
- # Invoke-WebRequest and Invoke-RestMethod can't work properly with UTF-8 Response so we need to do things this way.
- [Net.HttpWebRequest]$WebRequest = [Net.WebRequest]::Create($Uri)
- [Net.HttpWebResponse]$WebResponse = $WebRequest.GetResponse()
- $Reader = New-Object IO.StreamReader($WebResponse.GetResponseStream())
- $Response = $Reader.ReadToEnd()
- $Reader.Close()
-
- # Create the document class
- [mshtml.HTMLDocumentClass] $Doc = New-Object -com "HTMLFILE"
- $Doc.IHTMLDocument2_write($Response)
-
- # Returns a HTMLDocumentClass instance just like Invoke-WebRequest ParsedHtml
- $Doc
-
- #powershell 傳教士 轉帖并修改的文章 2016-01-01, 允許再次轉載,但必須保留名字和出處,否則追究法律責任
-
- }
原文函數
- function Read-HtmlPage {
- param ([Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)][String] $Uri)
-
- # Invoke-WebRequest and Invoke-RestMethod can't work properly with UTF-8 Response so we need to do things this way.
- [Net.HttpWebRequest]$WebRequest = [Net.WebRequest]::Create($Uri)
- [Net.HttpWebResponse]$WebResponse = $WebRequest.GetResponse()
- $Reader = New-Object IO.StreamReader($WebResponse.GetResponseStream())
- $Response = $Reader.ReadToEnd()
- $Reader.Close()
-
- # Create the document class
- [mshtml.HTMLDocumentClass] $Doc = New-Object -com "HTMLFILE"
- $Doc.IHTMLDocument2_write($Response)
-
- # Returns a HTMLDocumentClass instance just like Invoke-WebRequest ParsedHtml
- $Doc
- }
PowerShell function you can use for reading UTF8 encoded HTML pages content. The built in Invoke-WebRequest and Invoke-RestMethod fail miserably.
相關信息
-
Powershell 腳本數字簽名實現方法
腳本很容易被冒名頂替或者更改,因為它們是由純文本構成的。數字簽名為腳本提供了更高的安全性,因為它能確定腳本和腳本的編輯者的唯一性,并且不能被更改。作為腳本的發布者,你能確定你的腳本沒有被惡意篡改。即使專家也無...
2020-01-28
-