Ejemplo n.º 1
0
        public Result <TGrabRequest> StartGrabRequest(DbSession session, string issueName)
        {
            TGrabRequest request = new TGrabRequest();
            var          result  = request.Create(session, SpiderConfig.Spider.SpiderId, GetGrabType(), issueName, SpiderConfig.Spider.SpiderName);

            switch (result)
            {
            case TGrabRequest.CreateGrabRequestResult.Success:
                return(new Result <TGrabRequest>()
                {
                    ResultCode = EResultCode.Success, Data = request, Message = "创建请求对象成功"
                });

            case TGrabRequest.CreateGrabRequestResult.DbOperationFailed:
                return(new Result <TGrabRequest>()
                {
                    ResultCode = EResultCode.Failure, Message = "创建请求对象失败"
                });

            case TGrabRequest.CreateGrabRequestResult.Existed:
                return(new Result <TGrabRequest>()
                {
                    ResultCode = EResultCode.Failure, Message = "存在重复的请求对象,新增数据详情:" + Newtonsoft.Json.JsonConvert.SerializeObject(request)
                });

            default:
                ExceptionHelper.DoWhileResultCodeHandlerNotImplemented();
                return(null);
            }
        }
Ejemplo n.º 2
0
        public Result FinishGrabRequest(DbSession session, TGrabRequest request, EResultCode code, string message)
        {
            EProcessStatus status = EProcessStatus.Ready;

            switch (code)
            {
            case EResultCode.Success:
                status = EProcessStatus.Success;
                break;

            case EResultCode.Failure:
                status = EProcessStatus.Failure;
                break;

            case EResultCode.Error:
                status = EProcessStatus.Error;
                break;

            default:
                ExceptionHelper.DoWhileResultCodeHandlerNotImplemented();
                break;
            }
            return(new Result()
            {
                ResultCode = request.Settle(session, status, message) ? EResultCode.Success : EResultCode.Failure, Message = message
            });
        }
Ejemplo n.º 3
0
        //protected abstract Result GrabbingContent(string pageString, string pageName = "Default");
        protected Result ProcessingGrab(DbSession session, string pageString, string issueName = "")
        {
            //补全期名称
            if (string.IsNullOrEmpty(issueName))
            {
                issueName = GetPageNameWhileEmptyOrNull(issueName);
            }
            //请求查询
            var request = new TGrabRequest(SpiderConfig.Spider.SpiderId, GetGrabType(), issueName);

            if (!request.DbLoad(session))
            {
                var requestResult = StartGrabRequest(session, issueName);
                request = requestResult.Data;
            }
            if (request.ProcessStatus == EProcessStatus.Success)
            {
                return(new Result()
                {
                    ResultCode = EResultCode.Failure, Message = "存在已经处理的请求"
                });
            }
            //请求发起处理
            Result result = null;

            try
            {
                result = GrabContent(session, pageString, issueName);
            }
            catch (Exception ex)
            {
                result = new Result()
                {
                    ResultCode = EResultCode.Error, Message = ex.ToString()
                };
            }
            //请求结束处理
            return(FinishGrabRequest(session, request, result.ResultCode, result.Message));

            #region old
            ////期请求存储
            //session.BeginTransaction();
            //try
            //{
            //    //内容抓取处理
            //    if (result.ResultCode==EResultCode.Success)
            //    {
            //        result = GrabContent(session, pageString,issueName);
            //    }
            //    //请求结束处理
            //    result = FinishGrabRequest(session, requestResult.Data);
            //    if (result.ResultCode == EResultCode.Success)
            //    {
            //    }
            //    if (result.ResultCode == EResultCode.Success)
            //    {
            //        session.CommitTransaction();
            //    }
            //    else
            //    {
            //        session.RollBackTransaction();
            //    }
            //}
            //catch (Exception ex)
            //{
            //    session.RollBackTransaction();
            //    return new Result() { ResultCode = EResultCode.Error, Message = ex.ToString() };
            //}
            //return new Result() { ResultCode = result.ResultCode, Message = result.Message };
            #endregion
        }