private void StartPublish() { var taskView = new TaskFactory().StartNew(() => { if (modelTask.IsPublishContent == 1) { var publich = new PublishContentHelper(); publich.Model = modelTask; publich.PublishCompalteDelegate = GatherWorkDelegate; MessageOut("正在开始发布数据!"); publich.PublishCompalteDelegate = (object sender, GatherEvents.GatherLinkEvents e) => { MessageOut(e.Message); GatherComplateDelegate?.Invoke(modelTask); this.Stop(); }; publich.Start(); } else { GatherComplateDelegate(modelTask); MessageOut("发布数据没有开启!不需要发布数据!"); } OutTaskStatusHandler?.Invoke(EnumTaskType.Over); }); }
public void Start() { if (!this.Stopped || modelTask == null) { return; } this.Stopped = false; OutTaskStatusHandler = (EnumTaskType type) => { switch (type) { case EnumTaskType.List: StartList(); break; case EnumTaskType.View: StartView(); break; case EnumTaskType.Publish: StartPublish(); break; case EnumTaskType.Over: StartOver(); break; } }; OutTaskStatusHandler?.Invoke(EnumTaskType.List); }
private void StartList() { _listLinkUrl.Clear(); MessageOut($"[{modelTask.TaskName}]开始采集数据!请稍候..."); var task = new TaskFactory().StartNew(() => { //加载为采集的列表 if (modelTask.IsSpiderUrl == 1) { var spiderList = new SpiderListHelper(); spiderList.Model = modelTask; spiderList.OutTreeNodeHandler += (string url, string title, string cover, int nodeIndex) => { var m = new ModelLinkUrl() { Url = url, Title = title, Cover = cover }; bool addFlag = true; foreach (var item in _listLinkUrl.ToArray()) { if (item.Url == url) { addFlag = false; break; } } if (addFlag) { string msg = url + "==" + HtmlHelper.Instance.ParseTags(title); if (!DALContentHelper.ChkExistSpiderResult(modelTask.TaskName, url)) { _listLinkUrl.Enqueue(m); } else { msg += "采集地址存在!不需要采集!"; } MessageOut(msg); } }; spiderList.OutMessageHandler += (string msg) => { MessageOut(msg); }; spiderList.AnalyzeAllList(); MessageOut("分析获取网页个数为" + _listLinkUrl.Count + "个!"); MessageOut("采集网站列表完成!"); } else { MessageOut("采集列表关闭,不需要采集!"); } OutTaskStatusHandler?.Invoke(EnumTaskType.View); }); }
private void StartView() { var taskList = new TaskFactory().StartNew(() => { if (modelTask.IsSpiderContent == 1 && _listLinkUrl.Count > 0) { MessageOut($"开始采集列表地址详细内容!采集间隔{modelTask.CollectionContentStepTime}毫秒"); var spiderViewHelper = new SpiderViewHelper(); spiderViewHelper.Model = modelTask; spiderViewHelper.OutViewUrlContentHandler += (string content) => { MessageOut(content); }; var ProressNum = 0; var TaskCount = _listLinkUrl.Count; while (true) { if (_listLinkUrl.Count == 0) { break; } var mlink = _listLinkUrl.Dequeue(); try { #region 进度条 ProressNum++; MainEvents.OutPutTaskProgressBarEventArgs ea = new MainEvents.OutPutTaskProgressBarEventArgs(); ea.ProgressNum = ProressNum; ea.RecordNum = TaskCount; ea.TaskIndex = TaskIndex; OutPutTaskProgressBarDelegate?.Invoke(this, ea); #endregion spiderViewHelper.SpiderContent(mlink.Url, modelTask.ListTaskLabel); Thread.Sleep(modelTask.CollectionContentStepTime.Value); } catch (Exception ex) { LoggerHelper.Write(V5_WinLibs.LogLevel.Error, ex); } } MessageOut("采集网站Url内容完成!"); } else { MessageOut("采集网站内容选项关闭!或者采集列表的地址为0!不需要采集!"); } OutTaskStatusHandler?.Invoke(EnumTaskType.Publish); }); }