private SasFlightData ParseFlightNode(HtmlNode node) { var result = new SasFlightData(); try { // Get Airports var airports = node.SelectSingleNode("following-sibling::tr[1]").SelectNodes(".//td/span[@class='route']/span[@class='location']"); result.Departure = airports.First().SelectSingleNode(".//*[@class='airport']").InnerText; result.Arrival = airports.Last().SelectSingleNode(".//*[@class='airport']").InnerText; result.Connection = airports[1].InnerText.Contains(result.Arrival) ? "" : airports[1].InnerText; // Get Time -- I am ignoring the +1 days for now var time = node.SelectNodes(".//td[@class='time']/*[@class='time']"); result.DepTime = ParseTime(time[0].InnerText); result.ArrTime = ParseTime(time[1].InnerText); // Get fare Info result.Fares = GetAvailableFares(node); } catch (Exception e) { System.Console.WriteLine("Error Parsing flight Data: {0}", e.Message); } return(result); }
private IEnumerable <SasFlightData> ParseFlightsDataFromPage(HtmlDocument page, string table) { var flightsData = new List <SasFlightData>(); var flightNodes = page.DocumentNode.SelectNodes($"//div[contains(@class, '{table}')]//tr[contains (@id, 'idLine')]"); foreach (var node in flightNodes) { SasFlightData flight = ParseFlightNode(node); flightsData.Add(flight); } return(flightsData); }