private async Task<List<NameAndScore>> WebDateFromPage(int pagenum) { string url = "http://www.realtor.com/realestateagents/New-York_NY/photo-1"; if (pagenum != 0) url = "http://www.realtor.com/realestateagents/New-York_NY/photo-1/pg-" + pagenum.ToString(); var doc = await Task.Factory.StartNew(() => web.Load(url)); //var nameNodes = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]/div[2]/div[2]/div/div[1]/a"); //var scoreNodes = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div//div//span"); var nameNodes = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div/div//a"); var scoreNodes = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div//div"); if (nameNodes == null || scoreNodes == null) return new List<NameAndScore>(); var names = nameNodes.Select(node => node.InnerText); var scores = scoreNodes.Select(node => node.InnerText); return names.Zip(scores, (name, score) => new NameAndScore() { Name = name, Score = score }).ToList(); } private async void Form1_Load(object sender, EventArgs e) { int pagenum = 0; var rankings = await WebDateFromPage(0); while (rankings.Count > 0) { foreach (var ranking in rankings) table.Rows.Add(ranking.Name, ranking.Score); pagenum = pagenum + 1; rankings = await WebDateFromPage(pagenum); } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)