Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Классы и обьекты


Автор: ForzaMetall 3.8.2012, 13:18
Есть программа парсер страничек определенного сайта
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using HtmlAgilityPack;
namespace FormParserWorked_Version
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
       // перебирает странички по ссылкам
        IEnumerable<string> GetUrls(string url = "http://www.057.ua/dosug/446") 
        {
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(LoadWebPage(url));// загружаем страницу из параметра url
            foreach (HtmlNode link in doc.GetElementbyId("paginationControl").ChildNodes)
            if (link.Name == "a")
                yield return link.GetAttributeValue("href", string.Empty);
        }
        
       
        // скачивает странички
        static string LoadWebPage(string url)// метод загрузки всех страниц
        {
            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;
        }
        // Парсит нужную инфу
        void ParseLink(string url)
        {
            string s = LoadWebPage(url);
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(s);
            HtmlNodeCollection Reyt = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//p[@class='small_3']/strong");
            HtmlNodeCollection Names = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//td[@valign='top']/h2/a");
            HtmlNodeCollection streetsandphone = doc.DocumentNode.SelectNodes(@".//*[@id='all_body']//td[@valign='top']/strong");
            List<string> itogReyt = new List<string>();
            List<string> itognames = new List<string>();
            List<string> itogphones = new List<string>();
            if (Reyt != null)
            {
                //int j = 0;
                foreach (HtmlNode a in Reyt)
                {
                    itogReyt.Add(a.InnerText);
                }
                foreach (HtmlNode c in Names)
                {
                    itognames.Add(c.InnerText);
                }
                foreach (HtmlNode d in streetsandphone)
                {
                    itogphones.Add(d.InnerText);
                }
            }
            for (int y = 0; y < itognames.Count; y++)
            {
                richTextBox1.Text += itogReyt[y] + " " + itognames[y] + " " + itogphones[y] + "                                                                                                      ";
            }
            progressBar1.Minimum = 1;
            progressBar1.Maximum = 10;
            progressBar1.PerformStep();
            TextWriter TW = File.CreateText(@"bla/bla/1.csv");
            TW.WriteLine(richTextBox1.Text);
            TW.Close();
        }

       //  реализация в кнопке
        private void button1_Click(object sender, EventArgs e)
        {
            
            foreach (string link in GetUrls("http://www.057.ua"))
            {
                ParseLink(string.Concat("http://www.057.ua/dosug/446", link));
            }
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}


прошу помочь реализовать код для консольного приложения в виде классов - 
Класс - Парсинг.Класс для подключения и обработки страничек.Класс сохранения данных.
и еще нужно что бы при запуске программы в консольке показывало что сейчас происходит- допустим сейчас идёт парсинг 8 страницы или подключение к странице ну и тдд .
Заранее благодарен.

Автор: ForzaMetall 6.8.2012, 13:55
тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)