Есть программа парсер страничек определенного сайта
| Код | 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 страницы или подключение к странице ну и тдд . Заранее благодарен.
|