4

我的目标是解析一个用Invoke-WebRequest. 如果可能的话,我想避免使用任何外部库。

我面临的问题是,它Invoke-WebRequest返回 aBasicHtmlWebResponseObject而不是 aHtmlWebResponseObject 自 Powershell 6。该Basic版本缺少该ParsedHtml属性。在 Powershell Core 6 中解析 html 是否有很好的替代方法?

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

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

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

4

1 回答 1

2

正如评论中提到的,没有图书馆是不可能的。一个非常好的库,您可以将其用于 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);
于 2020-05-28T15:29:18.333 回答