Powershell Core 6中的HtmlWebResponseObject.ParsedHtml替换



我的目标是解析用Invoke-WebRequest检索的html文件。如果可能的话,我想避开任何外部图书馆。

我面临的问题是,自Powershell 6以来,Invoke-WebRequest返回的是BasicHtmlWebResponseObject,而不是HtmlWebResponseObjectBasic版本缺少ParsedHtml属性。在Powershell Core 6中有解析html的好方法吗?

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

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

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

正如评论中所提到的,没有库是不可能的。一个非常好的库,你可以使用它,用于dotnet的AngleSharp库。它具有强大的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);

相关内容

  • 没有找到相关文章

最新更新