private void Crawl(string url) { string html = CrawlDataFromUrl(url); var list_Course = Regex.Matches(html, @"(?<=Học nhanh)([\s\S]*?)(?=(\s)*<div class=""text-warning font-size-sm"">)"); foreach (var course in list_Course) { string strCourse = course.ToString(); string CourseName = Regex.Match(strCourse, @"(?<=>)(.*?)(?=</h4>)").Value; string CouseUrl = Regex.Match(strCourse, @"(?<=href="")(.*?)(?="">)").Value; var item = new MenuTreeItem { Name = CourseName, URL = CouseUrl }; AddItemIntoTreeViewItem(TreeItems, item); //thêm mới các node con CrawlListVideo(CouseUrl, item); } }
private void CrawlListVideo(string url, MenuTreeItem prarentNode) { //lấy ra html course con var htmlCourse = CrawlDataFromUrl(url); //lấy ra link đưa đến trang danh sách các phần bài học var urlPart = Regex.Match(htmlCourse, @"(?<=<div class=""asyncPartial"" data-url="")(.*?)(?="")").Value; //html của danh sách phần học var htmlListCourse = CrawlDataFromUrl(urlPart); var listPart = Regex.Matches(htmlListCourse, @"list-group-item([\s\S]*?)</a>"); foreach (var part in listPart) { var strPart = part.ToString(); string partName = Regex.Match(strPart, @"(?<=</span>)([\s\S]*?)(?=(<))").Value.Trim(); string partUrl = Regex.Match(strPart, @"(?<=href="")([\s\S]*?)(?="")").Value; var item = new MenuTreeItem { Name = partName, URL = partUrl }; AddItemIntoTreeViewItem(prarentNode.items, item); } }
private void AddItemIntoTreeViewItem(ObservableCollection <MenuTreeItem> root, MenuTreeItem node) { TreeMain.Dispatcher.Invoke(new Action(() => { root.Add(node); })); }