Example #1
0
        private static void executeLinkProcessor(SimpleSpider spider, IPageLinkCollector linkCollector, FetchCompleteEventArgs args)
        {
            if (linkCollector == null)
            {
                return;
            }
            if (!linkCollector.CanProcessPage(args))
            {
                // recursively call the fallback processor
                executeLinkProcessor(spider, linkCollector.FallBackProcessor, args);
                return;
            }

            try
            {
                var links = linkCollector.GetLinks(args)
                            .ToArray(); // execute
                spider.AddPages(links, args.Link);
            }
            catch
            {
                if (!linkCollector.ExecuteFallBackIfError)
                {
                    throw;
                }
                if (linkCollector.FallBackProcessor == null)
                {
                    throw;
                }

                executeLinkProcessor(spider, linkCollector.FallBackProcessor, args);
            }
        }
 public InitializationParams SetLinkCollector(IPageLinkCollector linkCollector)
 {
     LinkCollector = linkCollector;
     return(this); // Chaining
 }