private static ConcurrentBag <Disciplina> LerDisciplinas(string urlCampus, string p, ClienteWeb wc) { var discs = new ConcurrentBag <Disciplina>(); wc = new ClienteWeb(); wc.Encoding = Encoding.UTF8; var newUrl = urlCampus.Substring(0, urlCampus.LastIndexOf("/") + 1) + p; string html; try { html = wc.DownloadString(newUrl); } catch (Exception) { return(LerDisciplinas(urlCampus, p, wc)); } var dom = new HtmlAgilityPack.HtmlDocument(); dom.LoadHtml(html); var navigator = dom.CreateNavigator(); var tabela = navigator.Select("//table[@class='FrameCinza']"); while (tabela.MoveNext()) { var trs = tabela.Current.Select(".//tr"); trs.MoveNext(); var f = new FilaDisciplinas(); while (trs.MoveNext()) { var td = trs.Current.Select(".//td[2]"); td.MoveNext(); // estamos no TD que queremos var url = td.Current.Select(".//a/@href"); url.MoveNext(); var nome = td.Current.Select(".//a/text()"); nome.MoveNext(); f.Put(Tuple.Create(urlCampus, url.Current.Value, discs, nome.Current.Value)); } } return(discs); }
public static void WorkerFilaDisciplina() { var f = new FilaDisciplinas(); Tuple <string, string, ConcurrentBag <Disciplina>, string> msg; ClienteWeb wc = new ClienteWeb(); wc.Encoding = Encoding.UTF8; while ((msg = f.Get()) != null) { // f.Put(Tuple.Create(urlCampus, url.Current.Value, discs, nome.Current.Value)); var dep = new Disciplina(); dep.Nome = msg.Item4; var discs = msg.Item3; var urlCampus = msg.Item1; Console.WriteLine("\tLendo disc. " + dep.Nome); dep.Turmas = LerTurmas(urlCampus, msg.Item2, wc); Console.WriteLine("depth: " + CodeMQManager.GetQueueDepth(typeof(FilaDisciplinas))); discs.Add(dep); } f.Put(null); }
public static List <Departamento> LerDepartamentos(string urlCampus) { List <Departamento> deps = new List <Departamento>(); ClienteWeb wc = new ClienteWeb(); wc.Encoding = Encoding.UTF8; var html = wc.DownloadString(urlCampus); var dom = new HtmlAgilityPack.HtmlDocument(); dom.LoadHtml(html); var navigator = dom.CreateNavigator(); var tabela = navigator.Select("//table[@class='FrameCinza']"); List <Tuple <Departamento, string, string> > deptoTemp = new List <Tuple <Departamento, string, string> >(); while (tabela.MoveNext()) { var trs = tabela.Current.Select(".//tr"); trs.MoveNext(); while (trs.MoveNext()) { var td = trs.Current.Select(".//td[3]"); td.MoveNext(); // estamos no TD que queremos var url = td.Current.Select(".//a/@href"); url.MoveNext(); var nome = td.Current.Select(".//a/text()"); nome.MoveNext(); var dep = new Departamento(); dep.Nome = nome.Current.Value; deptoTemp.Add(Tuple.Create(dep, urlCampus, url.Current.Value)); } } /* deptoTemp.RemoveAll(n => * !@"Departamento de Administração * Departamento de Ciência da Computação * Departamento de Economia * Departamento de Engenharia Elétrica. * Departamento de Engenharia Mecânica * Departamento de Estatística * Departamento de Filosofia * Departamento de Matemática. * Departamento de Planejamento e Administração Departamento de Sociologia * Departamento de Teoria e Fundamentos * Depto de Ciências Contábeis e Atuariais * Direção da Faculdade de Tecnologia * Faculd. de Economia, Administração e Contabilidade * Faculdade de Ciência da Informação * Faculdade de Tecnologia * ".Contains(n.Item1.Nome.Trim()));*/ foreach (var depi in deptoTemp) { var dep = depi.Item1; Console.WriteLine("Lendo dpto. " + dep.Nome); dep.Disciplinas = LerDisciplinas(depi.Item2, depi.Item3, null); } var f = new FilaDisciplinas(); f.Put(null); return(deptoTemp.Select(n => n.Item1).ToList()); }