Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Core 6中的HtmlWebResponseObject.ParsedHtml替换_Powershell_Powershell Core_Powershell 6.0 - Fatal编程技术网

Powershell Core 6中的HtmlWebResponseObject.ParsedHtml替换

Powershell Core 6中的HtmlWebResponseObject.ParsedHtml替换,powershell,powershell-core,powershell-6.0,Powershell,Powershell Core,Powershell 6.0,我的目标是解析使用Invoke WebRequest检索的html文件。如果可能的话,我希望避免任何外部库 我面临的问题是,调用WebRequest会返回一个基本的HtmlWebResponseObject,而不是HtmlWebResponseObject。基本版本缺少ParsedHtml属性。在Powershell Core 6中是否有解析html的好方法 我尝试使用Select Xml,但我的html不是完全有效的,例如缺少结束标记,因此无法解析结果 我发现的另一种选择是使用新的Object

我的目标是解析使用Invoke WebRequest检索的html文件。如果可能的话,我希望避免任何外部库

我面临的问题是,调用WebRequest会返回一个基本的HtmlWebResponseObject,而不是HtmlWebResponseObject。基本版本缺少ParsedHtml属性。在Powershell Core 6中是否有解析html的好方法

我尝试使用Select Xml,但我的html不是完全有效的,例如缺少结束标记,因此无法解析结果

我发现的另一种选择是使用新的Object-ComObject HTMLFile,但据我所知,这依赖于Internet Explorer进行解析,我希望避免这种情况


有一个非常类似的问题,但遗憾的是,这个问题自8个月以来一直没有答案或活动。

如评论中所述,没有图书馆是不可能的。有一个非常好的库,你可以使用它:dotnet库。它具有强大的html解析功能,并且dotnet代码与powershell的交互非常友好,看看这个

以下是他们网站上的一个例子:

var config = Configuration.Default.WithDefaultLoader();
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
var context = BrowsingContext.New(config);
var document = await context.OpenAsync(address);
var cellSelector = "tr.vevent td:nth-child(3)";
var cells = document.QuerySelectorAll(cellSelector);
var titles = cells.Select(m => m.TextContent);

这个可能也不会有任何活动。解析功能依赖于IE组件,而IE组件显然不是核心的入门级组件。有人从头开始重新实现这些东西并将其放在基本实现中,而不是要求您拉入外部库进行解析的可能性很小。这里有一个供抢夺的标志。它快三周年了——我看不到它会很快被抢走,但谁知道呢……谢谢你提供的信息。让我有点困扰的是,select xml命令具有解析功能,但没有进行严格的解析。这就是为什么我认为可能存在另一种选择。问题是HTML所要求的不那么严格的解析与刻板的XML标准相比相当复杂,这就是为什么实现HTML解析实际上是最好留给精心策划的库来完成的事情,这些库需要花费时间和精力来完成这项非常重要的事情,这需要多种解释。HTML5以一种我们都能落后的方式制定了许多规则,使事情变得简单了一点。PowerShell Classic通过已经编写好的IE组件免费提供了这项服务,IE组件是操作系统的一部分,但对于Core来说,免费午餐已经结束。这听起来似乎是合理的,谢谢。那我可能得去图书馆看看。