using System.Collections.Generic;
public class ModelMotoContent {
public static string modelMotoPageURL = "http://www.elcats.ru/moto/bmw/";
private static string[] selectIDRegion = {"//input[@id]"};
private static string[] selectLabelRegion = {"//label[@for]",
private static List<string> regionIDs = new List<string>();
private static List<string> regionNames = new List<string>();
private static void GetRegionFrom(HtmlDocument htmlDoc) {
foreach (string selectNode in selectIDRegion) {
foreach (HtmlAgilityPack.HtmlNode node in htmlDoc.DocumentNode.SelectNodes(selectNode)) {
if (selectNode == selectIDRegion[0] && node.Attributes["type"].Value == "radio") {
regionIDs.Add(node.Attributes["id"].Value);
foreach (string selectNode in selectLabelRegion) {
foreach (HtmlAgilityPack.HtmlNode node in htmlDoc.DocumentNode.SelectNodes(selectNode)) {
if (selectNode == selectLabelRegion[0]) {
if (regionIDs.Contains(node.Attributes["for"].Value)) {
regionNames.Add(node.InnerText);
public static void GetHeadersAndMarkFrom(string response) {
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(response);
public class VITVehicle {
public string Type { get; set; }
public Dictionary<string, string> Mark { get; set; }
public Dictionary<string, string> Model { get; set; }
public Dictionary<string, string> CarBody { get; set; }
public Dictionary<int, string> ModelList { get; set; }
public static List<string> typesTV = new List<string>();
public static List<VITVehicle> passengerCars = new List<VITVehicle>();
public static List<VITVehicle> commercialVehiclesTrucksBuses = new List<VITVehicle>();
public static List<VITVehicle> motoAtvScuters = new List<VITVehicle>();
Mark = new Dictionary<string, string>();
ModelList = new Dictionary<int, string>();
Model = new Dictionary<string, string>();
CarBody = new Dictionary<string, string>();
public class MainContent {
public static string mainPageURL = "http://www.elcats.ru/";
private static string[] selectedNodes = {"//ul[@class='models']",
public static string GetResponseFrom(string pageURL) {
WebClient wbClient = new WebClient();
Stream mainResponse = wbClient.OpenRead(pageURL);
StreamReader mainReader = new StreamReader(mainResponse);
string mainResponseFromServer = mainReader.ReadToEnd();
return mainResponseFromServer;
private static string GetFullLinkToNextPage(string pieceLink) {
if (pieceLink.IndexOf(ch) == 0) {
fullLink = String.Concat(mainPageURL, pieceLink.Substring(1));
private static void GetHeadersAndMarkFrom(string response) {
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(response);
foreach (string selectNode in selectedNodes)
foreach (HtmlAgilityPack.HtmlNode node in htmlDoc.DocumentNode.SelectNodes(selectNode))
VITVehicle tVehicle = new VITVehicle();
if (selectNode == selectedNodes[2] && node.Attributes["href"].Value.Contains("/truck/")) {
tVehicle.Mark.Add(node.InnerText, GetFullLinkToNextPage(node.Attributes["href"].Value));
tVehicle.Type = VITVehicle.typesTV[1];
VITVehicle.commercialVehiclesTrucksBuses.Add(tVehicle);
else if (selectNode == selectedNodes[2] && node.Attributes["href"].Value.Contains("/moto/")) {
tVehicle.Mark.Add(node.InnerText, GetFullLinkToNextPage(node.Attributes["href"].Value));
tVehicle.Type = VITVehicle.typesTV[2];
VITVehicle.motoAtvScuters.Add(tVehicle);
else if (selectNode == selectedNodes[1]) {
VITVehicle.typesTV.Add(node.InnerText);
else if (selectNode == selectedNodes[2]){
tVehicle.Mark.Add(node.InnerText, GetFullLinkToNextPage(node.Attributes["href"].Value));
tVehicle.Type = VITVehicle.typesTV[0];
VITVehicle.passengerCars.Add(tVehicle);
private static void ToOutput(List<VITVehicle> vehicleList) {
if ((vehicleList.Count != 0)) {
Console.WriteLine("\n{0}:", vehicleList[0].Type);
foreach (VITVehicle selectNode in vehicleList)
foreach (KeyValuePair<string,string> inNode in selectNode.Mark) {
Console.WriteLine(inNode.Key + ", Link: " + inNode.Value);
Console.WriteLine("Ошибка!\nВозможно используемый список пуст.");
public static void OutputToConsoleDataFromMainPage() {
ToOutput(VITVehicle.motoAtvScuters);
ToOutput(VITVehicle.commercialVehiclesTrucksBuses);
ToOutput(VITVehicle.passengerCars);
public static void GetAndWriteDataFromMainPage() {
string response = MainContent.GetResponseFrom(mainPageURL);
MainContent.GetHeadersAndMarkFrom(response);
public static string modelPageURL = "";
private static string[] selectedNodes = {"//a[@href]","//a//li","//a//b"};
public static void getModelPageUrl()
foreach (string val in VITVehicle.passengerCars[2].Mark.Values)
Console.WriteLine(modelPageURL);
public static void getModelPageUrl(VITVehicle vehicle)
foreach (string val in vehicle.Mark.Values)
Console.WriteLine(modelPageURL);
public static void getModels(string response)
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(response);
foreach (string selectNode in selectedNodes)
foreach (HtmlAgilityPack.HtmlNode node in htmlDoc.DocumentNode.SelectNodes(selectNode))
if (node.Attributes["href"].Value.Contains("javascript:{};")
|| (node.Attributes["href"].Value.Contains("javascript:ToggleNode('") && !node.InnerText.Equals(""))) {
Console.WriteLine("Заголовок списка модели" + ": " + node.InnerText + " - " + node.Attributes["href"].Value);
Console.WriteLine("'" + headerNumber + "'");
} else if ((node.Attributes["href"].Value.Contains("javascript:submit") || node.Attributes["href"].Value.Contains("javascript:subm"))
&& !node.InnerText.Equals("")) {
Console.WriteLine("Наименование модели" + ": " + node.InnerText + " - " + node.Attributes["href"].Value);
} else if (node.Attributes["href"].Value.Contains("javascript:submit") && node.FirstChild.Name == "b") {
Console.WriteLine("Наименование модели" + ": " + node.FirstChild.InnerText + " - " + node.Attributes["href"].Value);
} else if (node.Attributes["href"].Value.Contains("javascript:submit") && node.Attributes["href"].Value.Contains("'" + headerNumber + "'")) {
Console.WriteLine("Наименование модели" + ": " + node.InnerText + " - " + node.Attributes["href"].Value);
public static void Main()
MainContent.GetAndWriteDataFromMainPage();
MainContent.OutputToConsoleDataFromMainPage();
var urlPiece = "/moto/honda/Unit.aspx?Model=9D800000&Title=XR125L%20(2003)";
var urlPiece2 = System.Web.HttpUtility.UrlEncode(urlPiece);
var urlPieceToEncode = "%2fmoto%2fhonda%2fUnit.aspx%3fModel%3d9D800000%26Title%3dXR125L%2520(2003)";
var urlPieceToEncode2 = System.Web.HttpUtility.UrlDecode(urlPieceToEncode);
Console.WriteLine(urlPiece2);
Console.WriteLine(urlPieceToEncode2);
var responseMotoBMW = MainContent.GetResponseFrom(ModelMotoContent.modelMotoPageURL);
ModelMotoContent.GetHeadersAndMarkFrom(responseMotoBMW);
VIAuto.getModelPageUrl();
string response = MainContent.GetResponseFrom(VIAuto.modelPageURL);
VIAuto.getModels(response);