Разработка автоматизированной системы классификации товаров по изображениям

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ine ("Получение категорий с сайта");wB = new WebBrowser ();. ScriptErrorsSuppressed = true;url = "

. GetInnerElements ("table", 0)

. GetInnerElements ("tbody", 0)

. GetInnerElements ("tr",

)

. GetInnerElements ("td", 1)

. GetInnerElements ("div");(var columnDiv in columnDivList)

{. AddRange (columnDiv. GetInnerElements ("div"));

}. WriteLine ("Категории получены с сайта");(categoriesHtmlList);(CategoriesGotEvent! = null)();

}

// /

// / Парсит полученные с молотка категории

// /

// / categoriesHtmlList)

{. WriteLine ("Начался парс категорий");[] LastLevelURL = new string [4];catName;catURL;catClass;catLevel;catSiteId;wholeStopwatch = Stopwatch. StartNew ();(var categoryHtml in categoriesHtmlList)

{

// Stopwatch stopwatch = Stopwatch. StartNew ();= GetName (categoryHtml);= GetURL (categoryHtml);= GetClass (categoryHtml);= GetLevel (catClass);= GetSiteID (categoryHtml);c = null;(catLevel)

{0:

{= new Category (catURL, "this is root", catName, 0, catLevel);[0] = catURL;. Add (c);;

}1:

{= new Category (catURL, LastLevelURL [0], catName, catSiteId, catLevel);[1] = catURL;. Add (c);;

}2:

{= new Category (catURL, LastLevelURL [1], catName, catSiteId, catLevel);[2] = catURL;. Add (c);;

}3:

{= new Category (catURL, LastLevelURL [2], catName, catSiteId, catLevel);[3] = catURL;. Add (c);;

}4:

{= new Category (catURL, LastLevelURL [3], catName, catSiteId, catLevel);. Add (c);;

}: { break; }

}

// stopwatch. Stop ();

// Debug. WriteLine ( ( (double) stopwatch. ElapsedTicks / (double) Stopwatch. Frequency). ToString ());

}. Stop ();. WriteLine ("Время парса всех категорий " + ( (double) wholeStopwatch. ElapsedTicks / (double) Stopwatch. Frequency). ToString () + "с");. WriteLine ("Парс категорий окончен");

}

#region Методы DBEnginevoid ClearTables ()

{. ClearTables ();

}void ClearCategories ()

{. categoryTable. Clear ();

}string ReadSetting (string settingName)

{dbEngine. settingsTable. ReadSetting (settingName);

}

// /

// / Сохраняет ссылки на изображения в БД

// /

// / void SaveImages (Category c)

{. imageTable. Insert (c. categoryImages);

}

// /

// / Загружает ссылки на изображения из БД

// /

// / void LoadImages (Category c)

{. categoryImages = dbEngine. imageTable. GetImagesInCategory (c);

}

// /

// / Сохраняет категории в БД

// / void SaveCategories ()

{. categoryTable. Insert (categories);

}Category GetCategoryById (int id)

{dbEngine. categoryTable. GetById (id);

}

// /

// / Загружает категории из БД

// / void LoadCategories ()

{= dbEngine. categoryTable. GetAll ();(CategoriesGotEvent! = null)();

}

#endregion

#region Работа со списком категорий

// /

// / Возвращает список дочерних категорий (рекурсивная)

// /

// /

// / GetAllChildCategories (Category root)

{ ();. AddRange (. FindAll ((Category category)

{category. parentURL == root. url;

}

)

);count = childs. Count;(count > 0 && root. level < 4)

{(int i = 0; i < count; i++)

{. AddRange (GetAllChildCategories (childs [i]));

}

}childs;

}

// /

// / Возвращает список дочерних категорий

// /

// /

// / GetChildCategories (Category root)

{ ();. AddRange (. FindAll ((Category category)

{category. parentURL == root. url;

}

)

);childs;

}

// /

// / Возвращает категории уровня 0

// /

// / GetRoots ()

{ ();. AddRange (. FindAll ((Category category)

{category. level == 0;

}

)

);roots;

}

#endregion

#region Вспомогательные функцииGetName (HtmlElement e)

{(e. FirstChild! = null && e. FirstChild. FirstChild! = null) return e. FirstChild. FirstChild. InnerText;"";

}GetURL (HtmlElement e)

{(e. FirstChild! = null) return e. FirstChild. GetAttribute ("href"). Replace ("about:", "

}GetClass (HtmlElement e)

{classExpression = new Regex (@"class=. {1} ([\w\d\s] *)", RegexOptions. IgnoreCase | RegexOptions.compiled);match = classExpression. Match (e. OuterHtml);(match. Success)

{match. Groups [1]. Value;

}"";

}GetLevel (string classLevel)

{classExpression = new Regex (@" (\d{1})", RegexOptions. IgnoreCase | RegexOptions.compiled);match = classExpression. Match (classLevel);(match. Success)

{Convert. ToInt32 (match. Groups [1]. Value);

}- 1;

}GetSiteID (HtmlElement e)

{siteIdExpression = new Regex (@" (\d{5,})", RegexOptions. IgnoreCase | RegexOptions.compiled);match = siteIdExpression. Match (e. OuterHtml);(match. Success)

{Convert. ToInt32 (match. Groups [1]. Value);

}- 1;

}

#endregion

// /

// / Получает изображения в категории, в несколько потоков

// /

// / cats)

{. WriteLine ("Запуск потоков парса ссылок на изображения");. getItemCounter = 0;. getItemWorkAmount = cats. Count;preparedList = ThreadHelper. SplitList (cats, getItemThreadCount);(var categories in preparedList)

{thread = new Thread (()

{(var cat in categories)

{. GetItems ();. Sleep (10);

}

}

);. SetApartmentState (ApartmentState. STA);. Start ();. Join (10);

}

}void ParallelSaveImagesToDisk (List cats)

{. WriteLine ("Запуск потоков закачки изображений");. saveImageCounter = 0;. saveItemWorkAmount = cats. Count;initialDirectory = ReadSetting ("initialDirectory");preparedList = ThreadHelper. SplitList (cats, saveItemThreadCount);(var categories in preparedList)

{thread = new Thread (()

{(var cat in categories)

{. SaveImages (initialDirectory);. Sleep (10);

}

}

);. SetApartmentState (ApartmentState. STA);. Start ();. Join (10);

}

}

}

}System;System. Collections. Generic;System. Linq;System. Text;System.net;System. IO;System. Text. RegularExpressions;System. Windows. Forms;System. Threading;System. Diagnostics;grabberMolotok

{class Category

{int id; // ИД категории в системе сайтаint level; // Уровень вложенияstring name; // Названиеstring url; // ссылкаstring parentURL; // ссылка на категорию-родительList categoryImages; // изображения товаров

#region Событияdelegate void CategoryParseCompletedEventHandler ();static event CategoryParseCompletedEventHandler CategoryParseCompletedEvent;delegate void CategoryImageSaveCompletedEventHandler ();static event CategoryImageSaveCompletedEventHandler CategoryImageSaveCompletedEvent;

#endregion

#region КонструкторыCategory (string url, string parentURL, string name, int id, int level)

{. url = url;. parentURL = parentURL;. name = name;. id = id;. level = level;= new List ();

}Category (string url)

{. id = - 1;. level = - 1;. name = null;. url = url;. parentURL = null;= new List ();

}Category ()

{. id = - 1;. level = - 1;. name = null;. url = null;. parentURL = null;= new List ();

}

#endregion

// /

// / Получает список товаров в категории

// / </summary>