Example #1
0
        /// <summary>
        /// 解析数据结果, 解析目标链接
        /// </summary>
        /// <param name="page">页面数据</param>
        public void Process(Page page)
        {
            var properties = page.Selectable(RemoveOutboundLinks).Properties;

            properties[Env.UrlPropertyKey]       = page.Request.Url;
            properties[Env.TargetUrlPropertyKey] = page.TargetUrl;

            if (!(page.Request.GetProperty(Page.Depth) == 1 && !Env.FilterDefaultRequest))
            {
                if (Filter != null && !Filter.IsMatch(page.Request))
                {
                    return;
                }
            }

            Handle(page);

            if (LastPageChecker != null && LastPageChecker.IsLastPage(page))
            {
                return;
            }

            IEnumerable <Request> requests;

            if (RequestExtractor != null && (requests = RequestExtractor.Extract(page)) != null)
            {
                foreach (var link in requests)
                {
                    if (Filter != null && !Filter.IsMatch(link))
                    {
                        continue;
                    }

                    if (CleanPound)
                    {
                        link.Url = link.Url.Split('#')[0];
                    }

                    page.AddTargetRequest(link);
                }
            }
        }