Invoke-WebRequest中的UseBasicParsing 1


从西安坐飞机去深圳,比坐火车是提速了,但是你可能错过欣赏沿途植被由北往南渐变的奇妙景观了。Invoke-WebRequest的提速也是如此。

Invoke-WebRequest提速中提到“使用-UseBasicParsing后,Invoke-WebRequest在请求完数据后,就不会调用IE去进行DOM树结果的解析”。然会@小楼回复:”用了这个参数少了很多东西。”

那到底少了什么呢?文字解释不一定准确, 用程序来解释吧:

$blog='https://www.pstips.net'
$useBasicParsing = Invoke-WebRequest $blog -UseBasicParsing
$useStandardParsing = Invoke-WebRequest $blog
$standardMember = $useStandardParsing | Get-Member | select -ExpandProperty Name
$basicMember = $useBasicParsing | Get-Member | select -ExpandProperty Name
Compare-Object $basicMember $standardMember

输出为:

AllElements =>
Forms       =>
ParsedHtml  =>
Scripts     =>

从上面的脚本和输出中至少可以看出:默认的输出类型比使用了UseBasicParsing后多出了4个属性。其实差异何止4个属性呢,返回值的类型也不同:

PS> $useStandardParsing.GetType().fullname
Microsoft.PowerShell.Commands.HtmlWebResponseObject
PS> $useBasicParsing.GetType().fullname
Microsoft.PowerShell.Commands.BasicHtmlWebResponseObject
  • BasicHtmlWebResponseObject:后者使用的是简单解析,只有链接,图片,输入框等。
  • HtmlWebResponseObject:前者使用的是DOM(IE的文档对象模型)解析。

结论:在不对DOM结点感兴趣时,可以使用useBasicParsing参数来提高效率。

本文链接: https://www.pstips.net/usebasicparsing-in-invoke-webrequest.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

一条评论 “Invoke-WebRequest中的UseBasicParsing