private void OnRepositoryOpenComplete(OnCompleteEventArgs args) { Logger.Trace("OnRepositoryOpenComplete"); if (args.ResultCode != OnCompleteEventArgs.CompleteResult.Ok) { // Сообщаем об ошибке _messenger.Send( new DialogMessage(this, args.Message, res => { }) { Button = MessageBoxButton.OK, Icon = MessageBoxImage.Error, Caption = "Ошибка инициализации хранилища" }, AppMessages.ErrorDialogMessage); return; } Repository = _repositoryViewModelFactory.Create(_repository); IsRepositoryLoaded = true; _container.RegisterInstance(_repository); DefualtColorsViewModel.GenerateDefaultColorsIfNeed(_applicationSettings, _loader, _colorsStorage); //LoadState(); }
private void OnReadFaultsComplete(OnCompleteEventArgs onCompleteEventArgs) { _canClose = true; if (onCompleteEventArgs.ResultCode == OnCompleteEventArgs.CompleteResult.Error) { _messenger.Send( new DialogMessage(this, onCompleteEventArgs.Message, (p) => { }) { Button = MessageBoxButton.OK, Caption = "Ошибка", Icon = MessageBoxImage.Error, }, AppMessages.CopyProgressError); Progress = 100; FaultsString = ""; PsnLogString = ""; Status = "При копировании возникла ошибка"; CommandManager.InvalidateRequerySuggested(); _messenger.Send(new CaptureNewFaultsMessage(false)); return; } Progress = 100; CommandManager.InvalidateRequerySuggested(); //заставляем вид обновить Command.CanExecute FaultsString = "Скопировано аварий: " + _addDataParameters.FaultsToRead.Count; PsnLogString = "Скопировано дампов магистрали ПСН: " + _addDataParameters.PsnLogsToRead.Count; _messenger.Send(new CaptureNewFaultsMessage(false)); }
void RaiseOpenDeviceError(OnCompleteEventArgs onCompleteEventArgs) { // Сообщаем об ошибке. _messenger.Send( new DialogMessage(this, onCompleteEventArgs.Message, (res) => _messenger.Send(AddDataWindowMessages.SelectDataSourcePage)) { Caption = "Ошибка" }, AppMessages.ErrorDialogMessage); }
private void OnCommandComplete(OnCompleteEventArgs e) { UnlockInterface(); if (e.ResultCode == OnCompleteEventArgs.CompleteResult.Ok) { LogStatusMessage(e.Message); } else if (e.ResultCode == OnCompleteEventArgs.CompleteResult.Error) { LogStatusMessage("Ошибка: " + e.Message); } }
private void OnRemoveComplete(OnCompleteEventArgs onCompleteEventArgs) { _canClose = true; if (onCompleteEventArgs.ResultCode == OnCompleteEventArgs.CompleteResult.Error) { ShowError(onCompleteEventArgs.Message, "При удалении возникла ошибка"); return; } Header = "Данные удалены"; Progress = 100; CommandManager.InvalidateRequerySuggested(); //заставляем вид обновить Command.CanExecute }
private void OnExportComplete(OnCompleteEventArgs onCompleteEventArgs) { _canClose = true; if (onCompleteEventArgs.ResultCode == OnCompleteEventArgs.CompleteResult.Error) { ShowError(onCompleteEventArgs.Message, "При копировании возникла ошибка"); return; } Header = "Данные успешно записаны в файл " + _fileName; Progress = 100; CommandManager.InvalidateRequerySuggested(); //заставляем вид обновить Command.CanExecute }
public override void HtmlParser(OnCompleteEventArgs e) { try { lock (_lock) { //解析器 var selector = new XPathSelector(e.Page); //最热小说 var dtHotNovels = selector.SelectNodes("//*[@id='hotcontent']/div/div/div[1]/a"); //最近更新 var latestNovels = selector.SelectNodes("//*[@id='newscontent']/div[1]/ul/li/span[2]/a"); //点击榜 var mostClickNovels = selector.SelectNodes("//*[@id='newscontent']/div[2]/ul/li/span[2]/a"); IList <string> urls = new List <string>(); foreach (var aEle in dtHotNovels) { urls.Add("http://" + e.Host + aEle.GetAttributeValue("href", "")); } foreach (var aEle in latestNovels) { urls.Add("http://" + e.Host + aEle.GetAttributeValue("href", "")); } foreach (var aEle in mostClickNovels) { urls.Add("http://" + e.Host + aEle.GetAttributeValue("href", "")); } var spiderManager = ContainerManager.Resolve <SpiderManager>(); //启动小说爬虫 spiderManager.RunTask("NovelSpider", new SpiderConfig() { Uris = urls }); } } catch (Exception exception) { //记录错误信息 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), LogLevel = (int)LCore.Logger.LogLevel.Error, ClassName = this.GetType().FullName, ActionName = exception.TargetSite.Name, Msg = e.Uri + "---" + exception.StackTrace }); } }
private void OnComplete(OnCompleteEventArgs onCompleteEventArgs) { if (onCompleteEventArgs.ResultCode == OnCompleteEventArgs.CompleteResult.Error) { RaiseOpenDeviceError(onCompleteEventArgs); } else { //_addDataParameters.SourceRepository = _sourceRepo; _addDataParameters.ReadLocomotives = _sourceRepo.Locomotives; _messenger.Send(new NavigateMessage <AddDataWindowMessages>(NavigateDirection.Forward, from: AddDataWindowMessages.ReadProgressPage, to: AddDataWindowMessages.AvailableFaultsPage)); //_messenger.Send(AppMessages.AddDataWindow.AvailableFaultsPage); } }
public override void HtmlParser(OnCompleteEventArgs e) { try { lock (_lock) { var stopWatch = new Stopwatch(); stopWatch.Start(); IList <Img> imgs = new List <Img>(); //初始化解析器 var selector = new XPathSelector(e.Page); var aEles = selector.SelectNodes("//*[@id='main']/div/div[1]/a"); foreach (var aEle in aEles) { string url = aEle.GetAttributeValue("href", ""); imgs.Add(new Img() { Url = url }); } _imageService.AddImages(imgs); stopWatch.Stop(); //记录爬取日志 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Msg = e.Uri + "请求消耗:" + e.Duration + "---" + "数据解析消耗:" + stopWatch.ElapsedMilliseconds, ClassName = "", ActionName = "", Duration = e.Duration + stopWatch.ElapsedMilliseconds, LogLevel = (int)LCore.Logger.LogLevel.Info }); } } catch (Exception exception) { //记录错误信息 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), LogLevel = (int)LCore.Logger.LogLevel.Error, ClassName = this.GetType().Name, ActionName = exception.TargetSite.Name, Msg = e.Uri + "---" + exception.Message }); } }
private void OnFtpRepositoryInfosLoaded(OnCompleteEventArgs onCompleteEventArgs, IEnumerable <IFtpRepositoryInfo> ftpRepositoryInfos) { if (onCompleteEventArgs.ResultCode == OnCompleteEventArgs.CompleteResult.Error && !onCompleteEventArgs.Message.Contains("Список устройств получен")) { _messenger.Send(new DialogMessage(this, onCompleteEventArgs.Message, (res) => _messenger.Send(AddDataWindowMessages.SelectDataSourcePage)) { Caption = "Ошибка" }, AppMessages.ErrorDialogMessage); return; } IsBusy = false; foreach (var ftpRepositoryInfo in ftpRepositoryInfos) { Items.Add(new FtpRepositoryInfoViewModel(ftpRepositoryInfo, _deviceInfoRepository)); } }
private void OnConfigReadComplete(OnCompleteEventArgs e) { UnlockInterface(); if (e.ResultCode == OnCompleteEventArgs.CompleteResult.Ok) { LogStatusMessage(e.Message); numericUpDownDevAddr.Value = _lastReadedConf.Address; textBoxLocName.Text = _lastReadedConf.LocomotiveName; comboBoxSectionNumber.SelectedIndex = _lastReadedConf.SectionNumber - 1; logPsnBox.Checked = _lastReadedConf.LogPsn; var configInfo = new FormInfo(_lastReadedConf.ToString()); configInfo.ShowDialog(); } else if (e.ResultCode == OnCompleteEventArgs.CompleteResult.Error) { LogStatusMessage("Ошибка: " + e.Message); textBoxLocName.Text = string.Empty; numericUpDownLocNumber.Value = 0; comboBoxSectionNumber.SelectedItem = null; numericUpDownDevAddr.Value = 0; numericUpDownNetAddr.Value = 0; } }
/// <summary> /// /// </summary> public async override void Run() { if (Datas != null && Datas.Count > 0) { foreach (KeyValuePair <string, T> item in Datas) { var uri = item.Key; Current = item.Value; var stopWatch = new Stopwatch(); stopWatch.Start(); var request = (HttpWebRequest)HttpWebRequest.Create(uri); #region 请求参数 request.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); //设置User-Agent,伪装成Google Chrome浏览器 request.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"); request.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); //定义gzip压缩页面支持 request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); request.AllowWriteStreamBuffering = false; //禁止缓冲加快载入速度 request.AllowAutoRedirect = false; //禁止自动跳转 request.Timeout = 5000; //定义请求超时时间为5秒 //启用长连接 request.KeepAlive = true; //定义请求方式为GET request.Method = "GET"; #endregion 请求参数 var completeArgs = new OnCompleteEventArgs() { Uri = uri }; try { using (var response = (HttpWebResponse)request.GetResponse()) { //判断如果已压缩 解压 if (response.ContentEncoding != null && response.ContentEncoding.ToLower().Contains("gzip")) { using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress)) { using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { completeArgs.Page = await reader.ReadToEndAsync(); } } } else { using (var stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { completeArgs.Page = await reader.ReadToEndAsync(); } } } } } catch (System.Exception) { return; } stopWatch.Stop(); completeArgs.Duration = stopWatch.ElapsedMilliseconds; //通知 Config.CallBack?.Invoke("请求Url:" + uri + "成功!" + " " + "花费时间:" + completeArgs.Duration); this.OnCompleted(this, completeArgs); } } }
public override void HtmlParser(OnCompleteEventArgs e) { lock (_lock) { try { var stopWatch = new Stopwatch(); stopWatch.Start(); var article = Current; if (!string.IsNullOrEmpty(e.Page)) { var selector = new XPathSelector(e.Page); var node = selector.SelectSingleNode("//*[@id='content']"); if (node != null) { //获取小说内容 string content = node.InnerHtml; article.Content = content; article.IsCrawlerContent = true; //更新信息 _novelService.UpdateArticel(article); //是否启动邮件发送 if (article.Novel != null && article.Novel.IsOpenEmail) { //发送邮件 EmailHelper.SendEmail(article.Title, content, new List <string>() { "*****@*****.**" }); } stopWatch.Stop(); //记录爬取日志 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Msg = e.Uri + "请求消耗:" + e.Duration + "---" + "数据解析消耗:" + stopWatch.ElapsedMilliseconds, ClassName = "", ActionName = "", Duration = e.Duration + stopWatch.ElapsedMilliseconds, LogLevel = (int)LCore.Logger.LogLevel.Info }); } else { //记录爬取日志 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Msg = e.Uri + "---未解析到数据!", ClassName = "", ActionName = "", Duration = e.Duration + stopWatch.ElapsedMilliseconds, LogLevel = (int)LCore.Logger.LogLevel.Warn }); } } } catch (Exception exception) { //记录错误信息 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), LogLevel = (int)LCore.Logger.LogLevel.Error, ClassName = this.GetType().FullName, ActionName = exception.TargetSite.Name, Msg = e.Uri + "---" + exception.StackTrace }); } } }
public override void HtmlParser(OnCompleteEventArgs e) { //线程锁 lock (_lock) { try { var stopWatch = new Stopwatch(); stopWatch.Start(); var img = Current; var selector = new XPathSelector(e.Page); var imgEles = selector.SelectNodes("//*[@id='post']/div[3]/p/img"); if (imgEles == null) { imgEles = selector.SelectNodes("//*[@id='post']/div[3]/p/a/img"); if (imgEles == null) { imgEles = selector.SelectNodes("//*[@id='post']/div[3]/p/strong/a/img"); } if (imgEles == null) { Debug.Write(e.Uri); } } if (imgEles != null) { IList <ImageInfo> imageInfos = new List <ImageInfo>(); foreach (var imgEle in imgEles) { string src = imgEle.GetAttributeValue("src", ""); if (!string.IsNullOrEmpty(src)) { //路径 //string savePath = @"C:\Temp\ApiInImages\"+DateTime.Now.ToString("yyyy-MM-dd")+@"\"; //if (!Directory.Exists(savePath)) //{ // Directory.CreateDirectory(savePath); //} ////保存图片 //var imageBaseInfo = ImgHelper.GetImageAndSave(src, savePath); string fileName = Path.GetFileName(src); if (fileName.Contains("!")) { fileName = fileName.Substring(0, fileName.IndexOf("!")); } imageInfos.Add( new ImageInfo() { Img = img, Url = src, SourceUrl = e.Uri, Name = fileName } ); } } img.IsCrawlerImgInfo = true; _imageService.AddImageInfos(imageInfos, img); } stopWatch.Stop(); //记录爬取日志 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Msg = e.Uri + "请求消耗:" + e.Duration + "---" + "数据解析消耗:" + stopWatch.ElapsedMilliseconds, ClassName = "", ActionName = "", Duration = e.Duration + stopWatch.ElapsedMilliseconds, LogLevel = (int)LCore.Logger.LogLevel.Info }); } catch (Exception exception) { //记录错误信息 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), LogLevel = (int)LCore.Logger.LogLevel.Error, ClassName = this.GetType().Name, ActionName = exception.TargetSite.Name, Msg = e.Uri + "---" + exception.Message }); } } }
/// <summary> /// 爬取数据完成后执行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SpiderCrawler_OnCompleted(object sender, OnCompleteEventArgs e) { //解析html HtmlParser(e); }
private void OnComplete(object sender, OnCompleteEventArgs e) { //string strPort=""; string portNum; string httpResponse; //bool IsDestionation= dic.TryGetValue(portNum, out List<string> destination); //if (IsDestionation) //{ // strDes=destination[0]; // strPort=destination[1]; //} //else //{ // strDes = "无"; // strPort = "0"; //} string time = DateTime.Now.ToString(); if (CodeSum == 0)//记录第一次扫到条码的时间 { firsttick = TimeTransitionHelper.GetCurrentTimeUnix(); } this.Invoke(new Action(() => { lbCode.ForeColor = Color.DarkBlue; lbCode.Text = "单号 " + e.DataStrings; })); try { if (STM32Ready && mLinkConnect) { if (NetWork.IsConnectInternet()) { string data = "[{\"ticketsNum\":\"" + e.DataStrings + "\",\"workConsole\":\"" + workConsole + "\"}]"; httpResponse = HttpHelper.PostDataGetHtml(url, data); JObject array = (JObject)JsonConvert.DeserializeObject(httpResponse); portNum = array["port"].ToString().Trim('"'); } else { return; } CodeSum++; nowtick = TimeTransitionHelper.GetCurrentTimeUnix(); if ((nowtick - firsttick) / 3600 < 1) { rate = (int)(CodeSum / ((nowtick - firsttick) / 3600 + 1)); } else { rate = CodeSum / ((nowtick - firsttick) / 3600.0); } this.Invoke(new Action(() => { lbSum.Text = "总数 " + Convert.ToString(CodeSum) + "/件"; lbRate.Text = "速率 " + rate.ToString("#0.00") + "件/小时"; lbDestination.Text = "目的地 " + portNum + "号口"; if (dt != null) { if (dgvData.RowCount > 3000) { if (IsSavaCode) { string dir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\条码记录"; if (!System.IO.Directory.Exists(dir)) { //创建pic文件夹 System.IO.Directory.CreateDirectory(dir); } string time2 = Regex.Replace(time, pattern, string.Empty, RegexOptions.IgnoreCase); ExcelHelper.ExportToExcel(dt, dir + "\\" + time2 + ".xls"); } dt.Clear(); } DataRow dr = dt.NewRow(); dr["单号"] = e.DataStrings; dr["重量(Kg)"] = weightStr; dr["目的地"] = portNum + "号口"; dr["时间"] = time; dr["扫描时间(ms)"] = e.UseTime; dt.Rows.Add(dr); dgvData.FirstDisplayedScrollingRowIndex = dgvData.Rows.Count - 1; } })); string sendstr = "win" + portNum + "\r\n"; byte[] send = Encoding.Default.GetBytes(sendstr); serialComm.WritePort(send, 0, send.Length); STM32Ready = false; time1 = Environment.TickCount; } } catch (Exception ex) { } }
/// <summary> /// html解析方法 /// </summary> public abstract void HtmlParser(OnCompleteEventArgs e);
/// <summary> /// html解析 /// </summary> /// <param name="e"></param> public override void HtmlParser(OnCompleteEventArgs e) { try { lock (_lock) { var stopWatch = new Stopwatch(); stopWatch.Start(); var selector = new XPathSelector(e.Page); //小说 Novel novel = new Novel(); //文章信息 novel.Articles = new List <Article>(); #region 小说信息 var nameEle = selector.SelectSingleNode("//*[@id='info']/h1"); if (nameEle != null) { novel.Name = nameEle.InnerText; } var authorEle = selector.SelectSingleNode("//*[@id='info']/p[1]"); if (authorEle != null) { string pStr = authorEle.InnerText; novel.Author = pStr.Split(':')[1]; } #endregion 小说信息 var oldNovel = _novelService.GetSingleNovel(new NovelSearchInput() { Name = novel.Name }); if (oldNovel == null) { GetArticles(selector, novel, e.Uri, "//*[@id='list']/dl/dd/a"); if (novel.Articles.Count > 0) { //设为已爬取 novel.IsCrawlerArticle = true; } //添加小说 _novelService.AddNovel(novel); } else { var laestArticle = _novelService.GetLaestArticle(); oldNovel.Articles = new List <Article>(); //获取最新章节 GetArticles(selector, oldNovel, e.Uri, "//*[@id='list']/dl/dd/a[number(translate(@href,'.html',''))>" + laestArticle.Seq + "]"); //更新新章节 _novelService.AddArticles(oldNovel.Articles.ToList()); } stopWatch.Stop(); //记录爬取日志 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Msg = e.Uri + "请求消耗:" + e.Duration + "---" + "数据解析消耗:" + stopWatch.ElapsedMilliseconds, ClassName = "", ActionName = "", Duration = e.Duration + stopWatch.ElapsedMilliseconds, LogLevel = (int)LCore.Logger.LogLevel.Info }); } } catch (Exception exception) { //记录错误信息 _loggerService.WriteLog(new Log() { DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), LogLevel = (int)LCore.Logger.LogLevel.Error, ClassName = this.GetType().Name, ActionName = exception.TargetSite.Name, Msg = e.Uri + "---" + exception.Message }); } }