예제 #1
0
        private void PartitionParse(string partitionURL)
        {
            if (partitionURL == null)
            {
                return;
            }
            // /html/body/table[3]/tbody/tr/td[2]

            var partitionPage = GetPage(partitionURL);

            if (partitionURL == null)
            {
                mess.WriteMessage(String.Format("Не удалось загрузить страницу: {0}", partitionPage));
                return;
            }
            HtmlNode           firstNews;
            HtmlNodeCollection newsPageLinks;

            try
            {
                firstNews     = partitionPage.DocumentNode.SelectSingleNode("/html/body/table[3]/tr/td[2]/div[2]/h2/a");
                newsPageLinks = partitionPage.DocumentNode.SelectNodes("/html/body/table[3]/tr/td[2]/*/h4/a");
            }
            catch
            {
                ConsoleError.ShowError(String.Format("Ошибка при выделении ссылок в теме: {0}", partitionURL));
                mess.WriteMessage(String.Format("Ошибка при выделении ссылок в теме: {0}", partitionURL));
                return;
            }

            if (!repository.ExistDocument(firstNews.InnerText))
            {
                string tmp = firstNews.GetAttributeValue("href", "");
                ParsePage(String.Format("{0}{1}", site, tmp));
            }
            foreach (var item in newsPageLinks)
            {
                if (!repository.ExistDocument(item.InnerText))
                {
                    string tmp = item.GetAttributeValue("href", "");
                    ParsePage(String.Format("{0}{1}", site, tmp));
                }
            }

            //ConsoleError.ShowError("Раздел закончен: "+partitionPage);
            //mess.WriteMessage(String.Format("Сохранили раздел: {0}", partitionPage));
        }
예제 #2
0
        /// <summary>
        /// Загружает страницу по адресу
        /// </summary>
        /// <param name="url"></param>
        /// <returns>Возвращает страницу HtmlDocument или null с выводом ошибки</returns>
        private HtmlDocument GetPage(string url)
        {
            //WebClient client = new WebClient();
            //client.Encoding = Encoding.UTF8;
            //client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)");
            //Stream stream = client.OpenRead(url);
            //StreamReader data = new StreamReader(stream);
            //string html = data.ReadToEnd();
            //wc.OpenRead();
            HtmlDocument doc = new HtmlDocument();
            //doc.LoadHtml(html);

            HtmlWeb page = new HtmlWeb();

            //page.OverrideEncoding = Encoding.Default;
            //page.UsingCache = false;
            page.AutoDetectEncoding = true;
            page.UserAgent          = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)";
            page.OverrideEncoding   = Encoding.Default;

            HtmlDocument newsPage = new HtmlDocument();

            try
            {
                newsPage = page.Load(url);
            }
            catch
            {
                ConsoleError.ShowError(String.Format("Не удалось загрузить страницу: {0}", url));
                mess.WriteMessage(String.Format("Не удалось загрузить страницу: {0}", url));
                //throw new Exception();
                return(null);
            }

            return(newsPage);
        }