Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2012, 21:42   #1
ForzaMetall
 
Регистрация: 29.07.2012
Сообщений: 7
По умолчанию Реализация готового кода классами и объектами.

Есть программа парсер страничек определенного сайта
Код:
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)
        {
            ParseLink("http://www.057.ua/dosug/446/");
            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 страницы или подключение к странице ну и тдд .
Заранее благодарен.
Вложения
Тип файла: rar FormParserWorked_Version.rar (201.5 Кб, 19 просмотров)
ForzaMetall вне форума Ответить с цитированием
Старый 07.08.2012, 15:04   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Так вам с такими запросами во фриланс надо бы ...
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не получается скрин протокола трассировки готового кода серг Помощь студентам 0 19.02.2010 12:15
нужна помощь в толковании готового кода(((( даша:( Общие вопросы по Java, Java SE, Kotlin 1 10.01.2010 03:07
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
реализация конечных автоматов классами или без них Armina Общие вопросы C/C++ 1 31.10.2009 03:43
Нужна помощь с изменением уже готового кода в C++ (массивы xD) Sad_SmiliK Помощь студентам 1 07.12.2008 03:36