.NET 4.x Парсинг странички, выбор нужного текста и сохранение в файл csv - C#

Узнай цену своей работы

Формулировка задачи:

программа парсинга. Парсит странички,выберая нужный текст и сохраняет в файл csv. Сделал: 1 перебирает все странички с нужной инфой по ссылкам на след страницы. 2заходит по ссылкам в описание нужного объекта для вытаскивания инфы. 3парсит нужную инфу 4 Сохранение - тут ошибка.Программа запускается ,работает,вроде бы как проходит все этапы но в файл пустой.Помогите найти ошибку. код класса:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using HtmlAgilityPack;
  6. using System.Net;
  7. using System.IO;
  8. namespace Console_Parser
  9. {
  10. class Parser
  11. {
  12. string url = "http://www.057.ua/dosug/446";
  13. // Свойство класса
  14. public string URL
  15. {
  16. set { url = value;}
  17. get { return url;}
  18. }
  19. public static string LoadWebPage(string url)// метод загрузки всех страниц
  20. {
  21. try
  22. {
  23. WebRequest reqGET = System.Net.WebRequest.Create(url);
  24. System.Net.WebResponse resp = reqGET.GetResponse();
  25. Stream stream = resp.GetResponseStream();
  26. StreamReader sr = new StreamReader(stream, Encoding.GetEncoding(65001));
  27. string s = sr.ReadToEnd();
  28. return s;
  29. }
  30. catch
  31. {
  32. return string.Empty;
  33. }
  34. }
  35. public void ParseLink(string url)
  36. {
  37. string s = LoadWebPage(url);
  38. HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
  39. doc.LoadHtml(s);
  40. HtmlNodeCollection C = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//td[@valign='top']/h2/a");
  41. if (C != null)
  42. {
  43. foreach(HtmlNode n in C)
  44. {
  45. if (n.Attributes["href"] != null)
  46. {
  47. string u = s + n.Attributes["href"].Value;
  48. string cafe_opisanie = LoadWebPage(u);
  49. HtmlAgilityPack.HtmlDocument d = new HtmlDocument();
  50. d.LoadHtml(cafe_opisanie);
  51. // HtmlNodeCollection Reyt = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//p[@class='small_3']/strong");
  52. HtmlNodeCollection Names = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//tbody//td[@valign='top']//h2");
  53. // HtmlNodeCollection streetsandphone = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//td[@valign='top']/strong");
  54. List<string> Cafe = new List<string>();
  55. if (Names != null)
  56. {
  57. for (int y = 0; y < Names.Count; y++) // заполняет все три коллекции
  58. {
  59. //Cafe.Add(Reyt[y].InnerText);
  60. Cafe.Add(Names[y].InnerText);
  61. //Cafe.Add(streetsandphone[y].InnerText);
  62. }
  63. }
  64. Save(Cafe);
  65. }
  66. }
  67. }
  68. }
  69. public static void Save(List<string> Cafe)
  70. {
  71. string[] txtmas = new string[Cafe.Count];
  72. for (int y = 0; y < Cafe.Count; y++)
  73. {
  74. txtmas[y] = string.Format(Cafe[y]);
  75. }
  76. StreamWriter SW = File.AppendText(@"bla bla bla 1.csv");
  77. //SW.Flush();
  78. // SW.WriteLine("#File_adres_names_phones");
  79. for (int y = 0; y < txtmas.Length; y++)
  80. {
  81. SW.WriteLine(txtmas[y]);
  82. }
  83. SW.Close();
  84. }
  85. public IEnumerable<string> GetUrls(string url ="")
  86. {
  87. if (url == "") // точка остановы (отладка)
  88. {
  89. url = this.url;
  90. }
  91. HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
  92. doc.LoadHtml(LoadWebPage(url));// загружаем страницу из параметра url
  93. foreach (HtmlNode link in doc.GetElementbyId("paginationControl").ChildNodes)/
  94. {
  95. if (link.Name == "a")// если содержит атрибут "a"
  96. {
  97. yield return link.GetAttributeValue("href", string.Empty);
  98. }
  99. }
  100.  
  101. }
  102. }
  103. }
Код выполнения:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6.  
  7. namespace Console_Parser
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. Console.WriteLine("Begin work");
  14. Parser WorkParser = new Parser();
  15. Console.WriteLine("Connect to url");
  16. WorkParser.ParseLink(@"http://www.057.ua/dosug/446/");
  17. Console.WriteLine("Begin Parse");
  18. foreach (string link in WorkParser.GetUrls(@"http://www.057.ua/dosug/446"))
  19. {
  20. WorkParser.ParseLink(string.Concat(@"http://www.057.ua", link));
  21. }
  22. Console.WriteLine("Parse done");
  23. Console.WriteLine("Saving to file");
  24. Console.WriteLine("WorkDone");
  25. Console.WriteLine("To Exit Please enter -q-");
  26. Console.ReadKey();
  27. }
  28. }
  29. }
ошибка я так подозреваю где то в методе public void ParseLink(string url) но какая именно не знаю.

Решение задачи: «.NET 4.x Парсинг странички, выбор нужного текста и сохранение в файл csv»

textual
Листинг программы
  1. Наименование:кафе Cinema, доставка обедов, заказ пиццы, суши, десерты, торты на заказ
  2. Адрес:улица Пушкинская, 22
  3. Сайт:http://www.cinema-cafe.com.ua, http://vk.com/cinema.caffee, http://www.face
  4. book.com/Cinema.Caffee
  5. Телефон:758-55-88, +380 (63) 225-57-77
  6. Емеил:info@cinema-cafe.com.ua
  7. Skype:
  8. Время работы:10 00 - 23 00
  9.  
  10. Наименование:FASHION COFFEE, boutique Харьков
  11. Адрес:улица Сумская, 77/79
  12. Сайт:
  13. Телефон:750-60-44, +380 (99) 700-17-76
  14. Емеил:fcoffee@ymail.com
  15. Skype:fashioncoffee1
  16. Время работы:с 9:00 до 19:00
  17.  
  18. Наименование:РК 24
  19. Адрес:улица Героев Труда, 9, ТРЦ Дафи, 3-этаж
  20. Сайт:http://rk24.com.ua/
  21. Телефон:728-19-47
  22. Емеил:
  23. Skype:
  24. Время работы:круглосуточно
  25.  
  26. Наименование:TACO- Доставка мексиканской кухни
  27. Адрес:
  28. Сайт:http://taco.com.ua
  29. Телефон:758-90-90
  30. Емеил:taco.kh@mail.ru
  31. Skype:
  32. Время работы:10.00 - 22.00

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы