public void GetUngetPackages() { var worker = WorkerProvider.GetWorker(); worker.AddHandler(new SiteHandler()); worker.AddHandler(new ArticleHandler()); worker.Start(); foreach (var i in Enumerable.Range(1, 2)) { worker.Publish(new SiteProfile { SiteAddress = "https://www.nuget.org/packages?page=" + i }); } worker.WaitUntilNoMessage(); worker.Stop(); }
public void Handle(SiteProfile message, CancellationToken cancellationToken) { var document = new HtmlDocument(); using (var client = new HttpClient()) { var html = client.GetStringAsync(message.SiteAddress).Result; document.LoadHtml(html); } var articles = document.DocumentNode.QuerySelectorAll(".list-packages .package a.package-title")?.Select( a => new ArticleProfile { NugetLink = "https://www.nuget.org" + a.Attributes["href"]?.Value, Title = a.InnerText }); Console.WriteLine(message.SiteAddress); WorkerProvider.GetWorker().Publish(articles); }