protected override List <string> ProcessUrlAndGetLinks(WebClient webClient, string current_url, int processId) { //if (progress.Counter > 1000) //{ // return new List<string>(); //} try { if (progress.Counter % 10 == 0) { Console.WriteLine("progress.Counter = {0}, progress.CountPerSecond = {1}", progress.Counter, progress.CountPerSecond()); } progress.Increment(); //Console.WriteLine("\n({0}, {1}) ID={3} download {2}", visited_urls.Count, urls_to_visit.Count, current_url, processId); string html = webClient.DownloadString(current_url); HtmlDocument document = new HtmlDocument(); document.LoadHtml(html); HtmlNode root = document.DocumentNode; List <string> links = root.SelectNodes("//a[@href]") .Select(el => normalize_url(current_url, el.GetAttributeValue("href", null))) .ToList(); List <string> filtered_links = links.Where(good_url).ToList(); IAppDataUS app = null; try // parse app { Console.WriteLine(current_url); app = new IAppDataUS(document, current_url); //\\ lock (apps) { apps.Add(app); } //Console.WriteLine(app.name + " " + app.url); } catch (Exception e) { AddException(e, current_url); } save_page_to_file(root, html, app); return(filtered_links); } catch (Exception e) { AddException(e, current_url); return(new List <string>()); } }