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.

(0)

相关推荐

  • powershell网络蜘蛛解决乱码问题

    抓取(爬取)网上信息的脚本程序,俗称网络蜘蛛. powershell中自带了这样的两个命令,[Invoke-WebRequest]和[Invoke-RestMethod],但这两个命令有时候会乱码. 现在转帖分享, 某个[歪果仁]写的脚本.来源于 墙外出处: https://gist.github.com/angel-vladov/9482676 核心代码 function Read-HtmlPage { param ([Parameter(Mandatory=$true, Position=0

  • Python网络爬虫出现乱码问题的解决方法

    关于爬虫乱码有很多各式各样的问题,这里不仅是中文乱码,编码转换.还包括一些如日文.韩文 .俄文.藏文之类的乱码处理,因为解决方式是一致的,故在此统一说明. 网络爬虫出现乱码的原因 源网页编码和爬取下来后的编码格式不一致. 如源网页为gbk编码的字节流,而我们抓取下后程序直接使用utf-8进行编码并输出到存储文件中,这必然会引起乱码 即当源网页编码和抓取下来后程序直接使用处理编码一致时,则不会出现乱码; 此时再进行统一的字符编码也就不会出现乱码了 注意区分 源网编码A. 程序直接使用的编码B. 统

  • struts2中通过json传值解决乱码问题的实现方法

    本文实例讲述了struts2中通过json传值解决乱码问题的实现方法.分享给大家供大家参考,具体如下: 在struts2中如果使用json在jsp和java文件传中文值时往往会出现中文乱码访问,解决此问题可以使用以下方法 一.在js文件中使用 encodeURI来编码,例子: var url = "orderPrint.action?roomName="+encodeURI(encodeUR(roomName)); $.post(url,function(data){ } 二.在jav

  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅. 首先: 用show variables like "%colla%":show varables like "%char%":这两条命令查看数据库与服务端的字符集设置 如果查看出来都是gbk2312,或 gbk,那么就只能支持简体中文,繁体和一些特殊符号是不能插入的,我们只有修改字符集为UTF-8, 修改方法如下: 用记事本或

  • servlet 解决乱码问题

    对于servlet大家应该都很熟悉了,今天再复习一下,如果有哪里写的不好或不对的地点希望广大的网友批评指正.今天只讨论get和post两w种方式,他们之间有很多的不同点,所以解决编码的方式也会不一样,post的乱码问题好解决一点,下面先简单说下http协议,以便我能更好的记忆原理性的东西和他们之间的不同点. get方式和post方式都是基于http协议的,它的目的是为了提供一种发布和接收html页面的方法,由客户端发起请求,服务器端进行响应. 一个完整的请求消息包括:一个请求行,若干消息头和请求

  • 添加powershell脚本来解决nuget打包文件丢失问题

    对于进行nuget打包时,有时我们需要添加一个配置文件,就是一些文本文件,而这些文件我们在网站发布时需要同时复制到输出目录,否则会出现文件丢失的问题,我们在打包时通过添加powershell脚本来解决它. 一般添加powershell包之后,包的格式如下 添加-〉工具-〉install.ps1脚本 param($installPath, $toolsPath, $package, $project) $configItem = $project.ProjectItems.Item("log4.c

  • VMware虚拟机中Ubuntu18.04无法连接网络的解决办法

    虚拟机中Ubuntu18.04无法连接网络的解决办法,具体内容如下 对VMware虚拟机进行恢复默认网络设置 恢复虚拟网络默认设置(在断网状态下): 1)Ubuntu网络设置自动获取IP 依次单击[System Settings]–>[Network]–>[Wired]–>[Options-],如下图所示: 2)VMware重置 [Edit]–>[Virtual Network Editor-] 如果发现缺少VMnet1和VMnet8,则手动添加. 3)网络设置主机模式 参考文章:

  • IDEA安装Activiti插件并解决乱码问题

    一:通过IDEA直接安装插件 1:打开IDEA,File->Settings->Plugins:搜索actiBPM,点击Installed,安装成功重启IDEA即可:如下图: 2:重启IDEA之后,即可看到可以创建bpmn文件了 二:通过从官网下载jar包安装插件 1:有些版本的IDEA,可能从Plugins里搜索actiBPM,找不到结果,如下图: 2:需要从IDEA官网下载actiBPM.jar包,IDEA官网:https://plugins.jetbrains.com/,官网搜索acti

  • springboot全局字符编码设置解决乱码问题

    有时候我们会发现这种问题,明明已经设置了字符编码过滤器但是还会有乱码的情况出现,这个问题令我们很是头疼,我之前也遇到过这种情况.那怎么解决呢? springboot编码格式设置有三种方式,不管使用哪种方式,总有一款适合你. 1.在application.properties中设置 #编码格式 spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true se

  • 使用bat启动springboot项目并解决乱码问题

    目录 1.springboot项目打包jar 2.编写bat启动springboot脚本 3.bat启动springboot 4.常见问题 4.1.解决bat控制台中文乱码问题 4.2.cd %~dp0不是内部或外部命令 本文主要介绍了使用bat启动springboot项目并解决乱码问题,分享给大家,具体如下: 1.springboot项目打包jar 打包后,在如下目录: 这里打包的springboot的jar文件名为 api-0.0.1-SNAPSHOT.jar 2.编写bat启动spring

随机推荐