Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Aspose.Html;
- using System;
- using System.Collections.Concurrent;
- using System.Linq;
- using System.Threading;
- namespace Day02
- {
- class Program
- {
- static void Main(string[] args)
- {
- var cities = new ConcurrentBag<City>();
- var wait = new ManualResetEvent(false);
- Console.WriteLine("Started");
- // Parse for html doc
- var htmlDocument = new HTMLDocument();
- htmlDocument.OnLoad += (sender, e) =>
- {
- var doc = (HTMLDocument)sender;
- var htmlTables = htmlDocument.DocumentElement.GetElementsByTagName("table");
- if (htmlTables.Count() > 0)
- {
- var rows = htmlTables[0].GetElementsByTagName("tr");
- for (int i = 1; i < rows.Length; i++)
- {
- var cells = rows[i].GetElementsByTagName("td");
- var city = new City
- {
- Rank = Convert.ToInt32(cells[0].TextContent),
- CityName = cells[1].TextContent,
- Country = cells[2].TextContent,
- Popuplation = Convert.ToDouble(cells[3].TextContent.Replace(",", ""))
- };
- cities.Add(city);
- }
- wait.Set();
- };
- };
- htmlDocument.Navigate("https://www.worldatlas.com/citypops.htm");
- wait.WaitOne();
- foreach (var city in cities)
- {
- Console.WriteLine($"{city.Rank} {city.CityName} {city.Country} {city.Popuplation}");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement