Пример #1
0
        protected override async Task <BaseEvt> ParseHtml(string sn, string html)
        {
            var evt = new ListedEvt();

            evt.Sn  = sn;
            evt.Url = $"{domain}/ipo/show{sn}/";

            if (await ParseHtml(evt))
            {
                return(evt);
            }
            return(null);
        }
Пример #2
0
        /// <summary>
        /// 拉取单个上市详细数据
        /// </summary>
        /// <param name="evt"></param>
        /// <returns></returns>
        async Task <bool> ParseHtml(ListedEvt evt)
        {
            if (string.IsNullOrEmpty(evt.Url))
            {
                throw new ArgumentException("未赋值Url,无法执行");
            }
            string html;

            try
            {
                html = await Util.GetPage(evt.Url);
            }
            catch (Exception exp)
            {
                Util.Error($"error: {evt.Url}: {exp}");
                return(false);
            }
            var idx = html.IndexOf("投资事件详情", StringComparison.Ordinal);

            if (idx < 0)
            {
                Util.Error($"no data: {evt.Url}: {html}");
                return(false);
            }

            var match = _regexMain.Match(html, idx);

            if (!match.Success)
            {
                Util.Error($"no match data: {evt.Url}: {html}");
                return(false);
            }
            var dataStr  = match.Value;
            var matTitle = _regexTitle.Match(dataStr);

            if (!matTitle.Success)
            {
                Util.Error($"no match title: {evt.Url}: {dataStr}");
                return(false);
            }
            evt.Title = TrimVal(matTitle, 1);

            var matData = _regexData.Match(dataStr);

            if (!matData.Success)
            {
                Util.Error($"no match dataStr: {evt.Url}: {dataStr}");
                return(false);
            }

            evt.Name = TrimVal(matData, 1);

            matData      = matData.NextMatch();
            evt.Industry = TrimVal(matData, 1);

            matData        = matData.NextMatch();
            evt.InvestName = TrimVal(matData, 1);

            matData  = matData.NextMatch();
            evt.Date = TrimVal(matData, 1);

            matData   = matData.NextMatch();
            evt.Price = TrimVal(matData, 1);

            matData         = matData.NextMatch();
            evt.ListedPlace = TrimVal(matData, 1);

            matData       = matData.NextMatch();
            evt.ListedNum = TrimVal(matData, 1);

            matData  = matData.NextMatch();
            evt.Code = TrimVal(matData, 1);

            matData      = matData.NextMatch();
            evt.VcSuport = TrimVal(matData, 1);

            return(true);
        }