powershell网络蜘蛛解决乱码问题

 更新时间:2017年10月01日 20:07:17   作者:传教士  
这篇文章主要介绍了powershell网络蜘蛛解决乱码问题,需要的朋友可以参考下

抓取(爬取)网上信息的脚本程序,俗称网络蜘蛛。
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常用命令分类

    powershell常用命令分类

    本文创建了powershell常用命令 ,主要分为get类、set类、write类三大类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2014-10-10
  • PowerShell中的函数重载示例

    PowerShell中的函数重载示例

    这篇文章主要介绍了PowerShell中的函数重载示例,本文直接给出一个完整重载示例,需要的朋友可以参考下
    2015-06-06
  • Windows Powershell 变量的幕后管理

    Windows Powershell 变量的幕后管理

    如果在Powershell中输出一个变量,只会输出这个变量的值。不能够显示它的其它信息,如果想查看一个变量的其它保留信息,就需要变量的基类PSVariable对象,这个可以通过Get-Variable命令得到
    2014-09-09
  • PowerShell小技巧之True和False的类型转换

    PowerShell小技巧之True和False的类型转换

    这篇文章主要介绍了在PowerShell中将True和False的类型互相转换的几种方法,非常简单实用,有需要的朋友参考下
    2014-09-09
  • Powershell小技巧之播放WAV声音

    Powershell小技巧之播放WAV声音

    本文主要介绍了使用powershell播放WAV格式音频文件的一个小技巧,虽然很简单,但是很实用,需要的朋友可以参考下
    2014-09-09
  • 使用PowerShell将Excel工作表另存为独立文件

    使用PowerShell将Excel工作表另存为独立文件

    这篇文章主要为大家介绍了如何使用 PowerShell 脚本将一个 Excel 文件中的每个工作表单独另存为独立的 Excel 文件,以提高工作效率,需要的可以参考一下
    2023-08-08
  • 通过DNS TXT记录执行powershell

    通过DNS TXT记录执行powershell

    这篇文章主要介绍了通过DNS TXT记录执行powershell的相关资料,以及nishang的脚本使用,需要的朋友可以参考下
    2017-10-10
  • Tornado中database模块被取消的替代方法

    Tornado中database模块被取消的替代方法

    这篇文章主要介绍了Tornado中database模块被取消的替代方法,新的方法是使用torndb模块,需要的朋友可以参考下
    2014-08-08
  • PowerShell函数参数用星号隐藏的方法

    PowerShell函数参数用星号隐藏的方法

    这篇文章主要介绍了PowerShell函数参数用星号隐藏的方法,这是一个很实用的技巧,比如在一些需要输入密码的情况,需要的朋友可以参考下
    2014-07-07
  • 探索PowerShell (二) PowerShell的基本操作

    探索PowerShell (二) PowerShell的基本操作

    这里介绍下如何打开powershell控制台,在 程序>附件>windows powershell中即可,主要是界面不再是dos窗口,据说功能也增加了很多
    2012-12-12

最新评论