def get_single_flight_info(flight_container): flight_info = {} flight_info['airlines'] = {} try: flight_info['airlines']["airline_logo"] = ( flight_container.findChild("div", { "class": "leg-carrier" }).findChild("img")['src']) except: flight_info['airlines']["airline_logo"] = ( flight_container.findChild("div", { "class": "section carriers" }).findChild('img')['src']) flight_info['airlines']["name"] = (flight_container.findChild( "div", { "class": "section times" }).findChild("div", { "class": "bottom" }).text.strip()) # info string is the arialabel like below # "Depart Leg: American Airlines, SFO 11:28 pm - JFK 3:17 pm. Select to show all results with this leg" info_string = flight_container.findChild( "input", {"name": "specleg"})['aria-label'] origin_idx = info_string.index(",") flight_info["airport_origin"] = info_string[origin_idx + 2:origin_idx + 5] depart_time_idx = origin_idx + 6 divider_idx = info_string.index("-") flight_info["takeoff_time"] = info_string[depart_time_idx:divider_idx - 1] destination_idx = divider_idx + 2 flight_info["airport_destination"] = info_string[ destination_idx:destination_idx + 3] landing_time_idx = destination_idx + 4 period_idx = info_string.index(".") flight_info["landing_time"] = info_string[landing_time_idx:period_idx] connections = flight_container.findChild("div", { "class": "section stops" }).text.strip().split("\n\n\n") flight_info["connections"] = connections[1:] flight_info["duration"] = flight_container.findChild( "div", { "class": re.compile("section duration") }).findChild("div", { "class": "top" }).text.strip() return Flight.fromdict(flight_info)