コード例 #1
0
        /// <summary>
        /// Startet die Datensammlung asynchron.
        /// </summary>
        /// <param name="firstUrl">Das URL der ersten Webseite.</param>
        /// <param name="hops"> Eine Liste von Zergliedern für jedes erwartetes Hop.</param>
        /// <param name="contentParser">Injizierter Zerglieder für den Inhalt der am Ende der Hops erreichten Webseite.</param>
        /// <returns>Eine asynchrone Aufgabe, die die gesamten gesammelten Daten verspricht.</returns>
        /// <exception cref="ParserException" />
        public async Task <IEnumerable <DataType> > CollectDataAsync(
            Uri firstUrl,
            IEnumerable <IHyperlinksParser> hops,
            IHypertextContentParser <DataType> contentParser)
        {
            var contents = new ConcurrentQueue <(Uri, string)>();

            await CollectContentRecursivelyAsync(firstUrl, hops, contents);

            var collectedData = new List <DataType>();

            foreach ((Uri url, string hypertext) in contents)
            {
                IEnumerable <DataType> parsedObjects =
                    WrapCall(() => contentParser.ParseContent(hypertext), url);

                collectedData.AddRange(parsedObjects);

                _log?.Info($"Die Zergliederung von {url} hat {parsedObjects.Count()} ergeben.");
            }

            return(collectedData);
        }
コード例 #2
0
 public static void Init()
 {
     try
     {
         var sql = Generator.GenerateSql(typeof(AccountCtlData));
         DBHelper.DefaultInstance.ExecuteSql(sql);
         logger.Info("Init finance db done ...");
         logger.Info("Init demo ...");
         InitData();
         logger.Info("Init demo done ...");
         logger.Info("Init AccountCtl data success.");
     }
     catch (FinanceException e)
     {
         logger.Error(e.Message);
     }
 }