コード例 #1
0
ファイル: flights.py プロジェクト: jonathanlei/dream-vacay
    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)