Beispiel #1
0
        public void Run(SiteForParsing siteForParsing)
        {
            try
            {
                Log = LogManager.GetCurrentClassLogger();

                var site = new Site
                {
                    Url           = siteForParsing.Url,
                    ExternalLinks = siteForParsing.ExternalLinks,
                    Depth         = siteForParsing.Depth,
                    LastUpdate    = DateTime.Now
                };

                SaveSiteToDb(site);

                Log.Info($"Run parsing: {site.Url}");
                var time = new Stopwatch();
                time.Start();

                IsParsing = true;
                _parser.Start(site, siteForParsing.NumberOfThreads);
                var save = new Task(SavePagesToDb);
                save.Start();

                Task.WaitAll(_parser.Tasks);
                IsParsing = false;
                Log.Info("Parsing Complete");
                Task.WaitAll(save);

                time.Stop();

                Log.Info($"Total time: {time.ElapsedMilliseconds}");
                Console.WriteLine($@"Total Pages: {_parser.MainSite.Pages.Count} Time: {time.ElapsedMilliseconds}");

                if (!siteForParsing.Tree)
                {
                    return;
                }

                _treeBuilder.Build(_parser.MainSite);
                Log.Info("Tree was successfully builded");
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
            }
        }
Beispiel #2
0
 public void AddSiteForParsing(SiteForParsing site)
 {
     _actionBlock.Post(site);
 }