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

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

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

программа парсинга. Парсит странички,выберая нужный текст и сохраняет в файл csv. Сделал: 1 перебирает все странички с нужной инфой по ссылкам на след страницы. 2заходит по ссылкам в описание нужного объекта для вытаскивания инфы. 3парсит нужную инфу 4 Сохранение - тут ошибка.Программа запускается ,работает,вроде бы как проходит все этапы но в файл пустой.Помогите найти ошибку. код класса:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;
using System.Net;
using System.IO;
 
namespace Console_Parser
{ 
    class Parser
    {
        string url = "http://www.057.ua/dosug/446";
        // Свойство класса 
       public string URL 
        { 
            set { url = value;}
            get { return url;}
        }
        public static string LoadWebPage(string url)// метод загрузки всех страниц
        {
            try
            {
                WebRequest reqGET = System.Net.WebRequest.Create(url);
                System.Net.WebResponse resp = reqGET.GetResponse();
                Stream stream = resp.GetResponseStream();
                StreamReader sr = new StreamReader(stream, Encoding.GetEncoding(65001));
                string s = sr.ReadToEnd();
                return s;
            }
            catch
            {
                return string.Empty;
            }
        }
       public void ParseLink(string url)
        {
            string s = LoadWebPage(url);
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(s);
            HtmlNodeCollection C = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//td[@valign='top']/h2/a");
            if (C != null)
            {
                foreach(HtmlNode n in C)
                {
                    if (n.Attributes["href"] != null)
                    {
                        string u = s + n.Attributes["href"].Value;
                        string cafe_opisanie = LoadWebPage(u);
                        HtmlAgilityPack.HtmlDocument d = new HtmlDocument();
                        d.LoadHtml(cafe_opisanie);
                       // HtmlNodeCollection Reyt = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//p[@class='small_3']/strong");
                        HtmlNodeCollection Names = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//tbody//td[@valign='top']//h2");
                       // HtmlNodeCollection streetsandphone = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//td[@valign='top']/strong");
                        List<string> Cafe = new List<string>();
                        if (Names != null)
                        {
                            for (int y = 0; y < Names.Count; y++) // заполняет все три коллекции
                            {
 
                                //Cafe.Add(Reyt[y].InnerText);
                                 Cafe.Add(Names[y].InnerText);
                                //Cafe.Add(streetsandphone[y].InnerText);
                            }
                            
                        }
                        Save(Cafe); 
                    }
 
                }
               
            }
            
        }
       public static void Save(List<string> Cafe)
        {
            string[] txtmas = new string[Cafe.Count];
            for (int y = 0; y < Cafe.Count; y++)
            {
                txtmas[y] = string.Format(Cafe[y]);
            }
            StreamWriter SW = File.AppendText(@"bla bla bla 1.csv"); 
            //SW.Flush();
           // SW.WriteLine("#File_adres_names_phones");
            for (int y = 0; y < txtmas.Length; y++)
            {
                SW.WriteLine(txtmas[y]);
            }
            SW.Close();
        }
 
      public IEnumerable<string> GetUrls(string url ="") 
        {
            if (url == "") // точка остановы (отладка)
            {
                url = this.url;
            }
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(LoadWebPage(url));// загружаем страницу из параметра url
                foreach (HtmlNode link in doc.GetElementbyId("paginationControl").ChildNodes)/
                {
                    if (link.Name == "a")// если содержит атрибут "a"
                    {
                        yield return link.GetAttributeValue("href", string.Empty);
                    }
                }

        }
 
    }
}
Код выполнения:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Console_Parser
{
    class Program
    {
 
        static void Main(string[] args)
        {
            
            Console.WriteLine("Begin work");
            Parser WorkParser = new Parser();
            Console.WriteLine("Connect to url");
            WorkParser.ParseLink(@"http://www.057.ua/dosug/446/");
            Console.WriteLine("Begin Parse");
            foreach (string link in WorkParser.GetUrls(@"http://www.057.ua/dosug/446"))
            {
                WorkParser.ParseLink(string.Concat(@"http://www.057.ua", link));
            }
            Console.WriteLine("Parse done");
            Console.WriteLine("Saving to file");
            Console.WriteLine("WorkDone");
            Console.WriteLine("To Exit Please enter -q-");
            Console.ReadKey();
        }
    }
}
ошибка я так подозреваю где то в методе public void ParseLink(string url) но какая именно не знаю.

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

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

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


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

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

5   голосов , оценка 4 из 5
Похожие ответы