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 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<TVehicle> passengerCars = new List<TVehicle>();
public static List<TVehicle> commercialVehiclesTrucksBuses = new List<TVehicle>();
public static List<TVehicle> motoAtvScuters = new List<TVehicle>();
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))
TVehicle TVehicle = new TVehicle();
if (selectNode == selectedNodes[2] && node.Attributes["href"].Value.Contains("/truck/")) {
TVehicle.Mark.Add(node.InnerText, GetFullLinkToNextPage(node.Attributes["href"].Value));
TVehicle.Type = TVehicle.typesTV[1];
TVehicle.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 = TVehicle.typesTV[2];
TVehicle.motoAtvScuters.Add(TVehicle);
else if (selectNode == selectedNodes[1]) {
TVehicle.typesTV.Add(node.InnerText);
else if (selectNode == selectedNodes[2]){
TVehicle.Mark.Add(node.InnerText, GetFullLinkToNextPage(node.Attributes["href"].Value));
TVehicle.Type = TVehicle.typesTV[0];
TVehicle.passengerCars.Add(TVehicle);
private static void ToOutput(List<TVehicle> vehicleList) {
if ((vehicleList.Count != 0)) {
Console.WriteLine("\n{0}:", vehicleList[0].Type);
foreach (TVehicle 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(TVehicle.motoAtvScuters);
ToOutput(TVehicle.commercialVehiclesTrucksBuses);
ToOutput(TVehicle.passengerCars);
public static void GetAndWriteDataFromMainPage() {
string response = MainContent.GetResponseFrom(mainPageURL);
MainContent.GetHeadersAndMarkFrom(response);
public static string modelPageURL = "";
private static string[] selectedNodes = {"//a[@href]"};
public static void getModelPageUrl()
foreach (string val in TVehicle.passengerCars[8].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(node.InnerText) && node.Attributes["href"].Value.Contains("javascript:submit")) {
Console.WriteLine("Chery");
if (AbarthAuto.modelPageURL.Contains("chery")) {
string modelName = node.Attributes["href"].Value;
modelName = modelName.Replace("'","");
modelName = modelName.Replace("javascript:submit(","");
modelName = modelName.Replace(")","");
Console.WriteLine(modelName);
Console.WriteLine(node.InnerText);
if (node.InnerText.Contains(modelName)) {
Console.WriteLine("Наименование модели внутри развертываемого списка 1.1" + ": " +node.InnerText + " - " + node.Attributes["href"].Value);
Console.WriteLine("Наименование модели внутри развертываемого списка 1.2" + ": " +node.InnerText + " - " + node.Attributes["href"].Value);
} else if (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("'" + headerNumber + "'")) {
Console.WriteLine("Наименование модели внутри развертываемого списка 2" + ": " + 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);
AbarthAuto.getModelPageUrl();
string response = MainContent.GetResponseFrom(AbarthAuto.modelPageURL);
AbarthAuto.getModels(response);