довільно змінюваті;
. Програмний код
.csSystem;System.Collections.Generic;System.Linq;System.Runtime.Serialization;System.ServiceModel;System.Text;ParsingService
{
//NOTE: You can use the Rename command on the Refactor menu to change the interface name IParsingService in both code and config file together.
[ServiceContract] interface IParsingService
{
[OperationContract] lt; Bank gt; ParseThePages (List lt; string gt; urls);
}
}.csSystem;System.Collections.Generic;System.Linq;System.Runtime.Serialization;System.ServiceModel;System.Text;HtmlAgilityPack;System.Net;System.IO;ParsingService
{
//NOTE: You can use the Rename command on the Refactor menu to change the class name ParsingService in both code and config file together.class ParsingService: IParsingService
{
//функція парсинга вказаних сторінок по їх url адресахList lt; Bank gt; ParseThePages (List lt; string gt; urls)
{ lt; Bank gt; lstOfBanks=new List lt; Bank gt; (); (var bankUrl in urls)
{. Add (ParseTheCurrentPage (bankUrl));
} lstOfBanks;
}
//функція парсинга однієї сторінки за її url адресуstatic Bank ParseTheCurrentPage (string url)
{html=GetHtml (url); doc=new HtmlDocument () ;. LoadHtml (html); GetBank (doc);
}
//функція отримання обьекта Банку за зазначеною HTML документуstatic Bank GetBank (HtmlDocument doc)
{
//інформація про валюту у форматі строкіinfo= raquo ;;
//інформація про валюту и форматі масива рядків [] kursInfo=new string [7];
//отримання потрібної нам таблиці з HTML страніциtable=doc.DocumentNode.SelectNodes (//table ) [0];
//отримуємо ім'я банку=doc.DocumentNode.SelectNodes (//title ) [0] .InnerText.Substring (11);=info.Replace ( amp; nbsp; raquo ;, laquo ;; );
//перебираємо всі валюти в таблиці (var tr_element in table.ChildNodes)
{(tr_element.Name == tr )
{
//Перевірка на відповідність тега lt; td gt; (tr_element.ChildNodes [1] .Name == td )
{
//додаємо інфомацмію про покупку валюти +=tr_element.ChildNodes [3] .FirstChild.InnerText + laquo ;; raquo ;;
//додаємо інфомацмію про продаж валюти +=tr_element.ChildNodes [5] .FirstChild.InnerText + laquo ;; raquo ;;
}
}
}
//розбиваємо рядок з інформацією про банк в масив рядків для зручного створення обьекта Банку (info!= )=info.Split ( laquo ;; );
//возращаться обьект Банкаnew Bank ()
{= kursInfo [0],=kursInfo [1],=kursInfo [2],=kursInfo [3],=kursInfo [4],=kursInfo [5],=kursInfo [6]
};
}
//Функція для отримання HTML страніциstatic string GetHtml (string url)
{
//Робимо запит за зазначеною urlrequest=HttpWebRequest.Create (url) as HttpWebRequest;
//Отримуємо відповідь по запросуresponce=request.GetResponse () as HttpWebResponse;
//Прочитуємо відповідь і переводимо його в string форматsr=new StreamReader (responce.GetResponseStream (), Encoding.Default); html=sr.ReadToEnd () ;. Close (); html;
}
}
}.csSystem;System.Collections.Generic;System.Linq;System.Text;System.Threading.Tasks;ParsingService
{class Bank
{string Name {get; set; } string UsdBuy {get; set; } string UsdSale {get; set; } string EurBuy {get; set; } string EurSale {get; set; } string RubBuy {get; set; } string RubSale {get; set; }
}
}. config
lt;? xml version= 1.0 encoding= utf - 8 ? gt;
lt; configuration gt;
lt; startup gt;
lt; supportedRuntime version= v4.0 sku= .NETFramework, Version=v4.5.1 / gt;
lt;/startup gt;
lt; system.serviceModel gt;
lt; services gt;
lt; service name= ParsingService.ParsingService behaviorConfig...