提问人:Stealthguy 提问时间:4/4/2022 最后编辑:Theodor ZouliasStealthguy 更新时间:4/4/2022 访问量:363
使用 AngleSharp 进行异步解析
Async parsing with AngleSharp
问:
所以我想从网站解析一些数据,我找到了一个教程,这是代码:
public static async void Test()
{
var config = Configuration.Default.WithDefaultLoader();
using var context = BrowsingContext.New(config);
var url = "http://webcode.me";
using var doc = await context.OpenAsync(url);
// var title = doc.QuerySelector("title").InnerHtml;
var title = doc.Title;
Console.WriteLine(title);
var pars = doc.QuerySelectorAll("p");
foreach (var par in pars)
{
Console.WriteLine(par.Text().Trim());
}
}
static void Main(string[] args)
{
Test();
}
程序在到达以下位置后立即退出:
using var doc = await context.OpenAsync(url);
答:
5赞
Charles Mager
4/4/2022
#1
没有任何东西在等待异步方法完成,因此程序会退出。您可以通过修改为使用异步 main 方法来修复此问题:
static Task Main(string[] args)
{
return Test();
}
或者,如果您使用的是早于 C# 7.1 的版本(不支持异步主版本):
static void Main(string[] args)
{
Test().GetAwaiter().GetResult();
}
您还需要将 return type 更改为 :Test
async Task
public static async Task Test()
{
// ...
}
你可能会发现 async main 上的 C# 7.1 文档很有帮助。
评论