コード例 #1
0
ファイル: Program.cs プロジェクト: Danko19/WikiParser
        private static void DoShit2()
        {
            var i = 1;
            var cookieContainer = new CookieContainer();

            using (var handler = new HttpClientHandler {
                CookieContainer = cookieContainer
            })
            {
                using (var client = new HttpClient(handler))
                {
                    using (var mySql = new MySqlStorage())
                    {
                        foreach (var abbreviation in mySql.GetAll <AbbreviationEntity>().OrderBy(x => x.Decryption?.Length ?? 0))
                        {
                            if (string.IsNullOrEmpty(abbreviation.Decryption))
                            {
                                continue;
                            }
                            var response = client.GetAsync(
                                abbreviation.Link)
                                           .GetAwaiter()
                                           .GetResult();
                            var html     = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
                            var config   = Configuration.Default;
                            var context  = BrowsingContext.New(config);
                            var document = context.OpenAsync(req => req.Content(html)).Result;
                            var div      = document.GetElementsByClassName("mw-parser-output").Single();

                            var ol = div.Children
                                     .SkipWhile(x =>
                                                x.TagName != "H4" ||
                                                !x.Children.Any(z => z.TagName == "SPAN" && z.Id == "Значение"))
                                     .Skip(1)
                                     .FirstOrDefault(x => x.TagName == "OL");

                            abbreviation.Decryption = ol?.TextContent;
                            mySql.InsertOrUpdate(abbreviation);
                        }
                    }
                }
            }
        }