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)); }
/// <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); }