使用AngleSharp加载 HTML 页面并等待下载所有样式表(如果需要)并且所有脚本都准备好执行解析器,我这样做
public sealed class WebReader
{
private IDocument _ashDocument;
public async Task Load(string Url)
{
var config = Configuration.Default.WithDefaultLoader().WithJavaScript().WithCss();
var context = BrowsingContext.New(config);
_ashDocument = await context.OpenAsync(Url);
}
public IEnumerable<string> getImage()
{
return _ashDocument.QuerySelectorAll("img").Select(n => n.Attributes["src"].Value);
}
}
static void Main(string[] args)
{
WebReader wReader = new WebReader();
AsyncContext.Run((Action)(async () =>
{
await wReader.Load("http://blogs.msdn.com/b/dotnet/");
}));
IEnumerable<string> imageUrls = wReader.getImage();
foreach (string url in imageUrls)
{
Console.WriteLine(url);
}
Console.ReadKey();
}
AsyncContext 是AsyncEx库的一部分。
如果没有 AsyncEx 库,是否可以做同样的事情?