def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight.xpath("./td/img/@alt").extract_first() flight_item["flight_no"] = flight.xpath( "./td[@class='flight']/text()").extract_first() flight_actual_time = flight.xpath( "./td[@style='line-height: normal;']/text()").extract()[1] flight_item["expected_time"] = self.date + datetime.strftime( datetime.strptime(flight_actual_time.strip(), "%I:%M %p"), "T%H:%M:%SZ") flight_status_time = flight.xpath("./td/em/text()").extract() if flight_status_time is None: flight_item["actual_time"] = flight_item["expected_time"] else: if len(flight_status_time) == 0: flight_item["actual_time"] = flight_item["expected_time"] else: flight_item["actual_time"] = self.date + datetime.strftime( datetime.strptime(flight_status_time[1].strip(), "%I:%M %p"), "T%H:%M:%SZ") flight_item["status"] = flight.xpath("./td/em/text()").extract_first().strip() if flight.xpath("./td/em/text()").extract_first() is not None \ else flight.xpath("./td[@class='status']/text()").extract_first() flight_item["terminal"] = AirportSpider.MAIN flight_item["gate"] = flight.xpath( "./td[@style='text-align: center;']/text()").extract_first() flight_item["city"] = flight.xpath( "./td[@class='city']/text()").extract_first() return flight_item
def __derive_flight(self, flight, leg): flight_data = flight.xpath("./td/text()").extract() flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight.xpath("./td/div/@class").extract_first()[len(YTZSpider.LOGO):] flight_item["flight_no"] = flight_data[2].strip() flight_item["city"] = flight_data[3].strip().upper() flight_item["expected_time"] = self.date + "T" + flight_data[4].strip() + AirportSpider.SECONDS_SUFFIX flight_item["actual_time"] = self.date + "T" + flight_data[5].strip() + AirportSpider.SECONDS_SUFFIX flight_item["status"] = flight_data[6].strip() flight_item["terminal"] = YTZSpider.MAIN flight_item["gate"] = AirportSpider.UNKNOWN return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_info = flight.xpath("./td/text()").extract() flight_item["leg"] = leg flight_item["airline"] = flight_info[1] flight_item["flight_no"] = flight_info[0] flight_item["city"] = flight_info[2] flight_item["expected_time"] = flight_info[3] flight_item["actual_time"] = flight_info[4] flight_item["status"] = flight.xpath( "./td/span/text()").extract_first() flight_item["gate"] = AirportSpider.UNKNOWN return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight["FlightAirlineName"] flight_item["flight_no"] = flight["FlightNumber"] flight_item["expected_time"] = flight["FlightScheduledTime"] flight_item["actual_time"] = flight["FlightEstimatedTime"] flight_item["status"] = flight["FlightStatus"] flight_item["terminal"] = AirportSpider.MAIN flight_item["gate"] = flight["FlightGate"] flight_item["city"] = flight["FlightCity"] return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight[0].strip() flight_item["flight_no"] = flight[1].strip() flight_item["city"] = flight[2].strip() flight_item["expected_time"] = self.date + "T" + flight[3].strip( ).split()[2] + AirportSpider.SECONDS_SUFFIX flight_item["actual_time"] = self.date + "T" + flight[4].strip().split( )[2] + AirportSpider.SECONDS_SUFFIX flight_item["status"] = flight[5].strip() flight_item["terminal"] = flight[6].strip() flight_item["gate"] = flight[9].strip() return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_info = flight.xpath("./td/text()").extract() flight_item["airline"] = flight_info[0] flight_item["flight_no"] = flight_info[1] flight_item["city"] = flight_info[4] flight_item["expected_time"] = self.date + "T" + flight_info[ 2] + AirportSpider.SECONDS_SUFFIX flight_item["actual_time"] = self.date + "T" + flight_info[ 3] + AirportSpider.SECONDS_SUFFIX flight_item["status"] = flight_info[5] flight_item["gate"] = AirportSpider.UNKNOWN flight_item["terminal"] = AirportSpider.MAIN return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight.xpath("./ul/li[@class='carrier']/a/span/span/text()").extract_first() airline_code = flight.xpath("./ul/li[@class='carrier']/a/span/i/@data-code").extract_first() flight_no = flight.xpath("./ul/li[@class='number']/span/text()").extract_first() flight_item["flight_no"] = airline_code + flight_no flight_item["city"] = flight.xpath("./ul/li[@class='location']/span/text()").extract_first() expected_time = flight.xpath("./ul/li[@class='expected-time']/span/text()").extract_first() flight_item["expected_time"] = self.date + "T" + expected_time + AirportSpider.SECONDS_SUFFIX actual_time = flight.xpath("./ul/li[@class='actual-time']/span/text()").extract_first() flight_item["actual_time"] = self.date + "T" + actual_time + AirportSpider.SECONDS_SUFFIX flight_item["status"] = flight.xpath("./ul/li[@class='status']/span/text()").extract_first() flight_item["gate"] = flight.xpath("./ul/li[@class='gate']/span/text()").extract_first() flight_item["terminal"] = AirportSpider.MAIN return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight.xpath( "./AirlineCode/text()").extract_first() flight_item["flight_no"] = flight_item["airline"] + flight.xpath( "./FlightNumber/text()").extract_first() flight_item["expected_time"] = datetime.strftime(datetime.strptime(flight.xpath("./FlightDate/text()").extract_first(), "%Y%m%d"), "%Y-%m-%d") + \ datetime.strftime(datetime.strptime(flight.xpath("./ScheduleTime/text()").extract_first(), "%H%M"), "T%H:%M") + AirportSpider.SECONDS_SUFFIX flight_item["actual_time"] = datetime.strftime( datetime.strptime( flight.xpath("./EstimatedTime/text()").extract_first(), "%Y%m%d%H%M"), "%Y-%m-%dT%H:%M:00Z") flight_item["status"] = flight.xpath("./Status/text()").extract_first() flight_item["gate"] = flight.xpath("./Gate/text()").extract_first() flight_item["city"] = flight.xpath( "./ViaAirportCity/text()").extract_first() flight_item["terminal"] = AirportSpider.MAIN return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() flight_item["leg"] = leg flight_item["airline"] = flight["company"] flight_item["flight_no"] = flight["flight"] flight_item["expected_time"] = self.date + "T" + flight[ "planned_hour"] + AirportSpider.SECONDS_SUFFIX if type(flight["revised_date"]) is str and type( flight["revised_hour"]) is str: flight_item["actual_time"] = parser.parse( flight["revised_date"]).strftime("%Y%m%d") + "T" + flight[ "revised_hour"] + AirportSpider.SECONDS_SUFFIX else: flight["actual_time"] = self.date flight_item["status"] = flight["details"]["status"] flight_item["terminal"] = AirportSpider.UNKNOWN flight_item["gate"] = flight["terminal_gate"] flight_item["city"] = flight["destination_without_accent"] return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() times = flight.xpath("./td/time/@datetime").extract() flight_item["leg"] = leg flight_item["airline"] = flight.xpath("./td/img/@alt").extract_first().strip() flight_item["flight_no"] = flight.xpath("./td/span[@class='visible-xs-inline']/text()").extract_first() + \ flight.xpath("./td[@class='views-field views-field-field-flight-number']/text()").extract()[5].strip() flight_item["expected_time"] = datetime.strftime(datetime.strptime(times[0], "%Y-%m-%dT%XZ") - timedelta(hours=5), "%Y-%m-%dT%XZ") if len(times) == 2: flight_item["actual_time"] = datetime.strftime(datetime.strptime(times[1], "%Y-%m-%dT%XZ") - timedelta(hours=5), "%Y-%m-%dT%XZ") else: flight_item["actual_time"] = datetime.strftime(datetime.strptime(times[0], "%Y-%m-%dT%XZ") - timedelta(hours=5), "%Y-%m-%dT%XZ") flight_item["status"] = flight.xpath("./td[@class='views-field views-field-field-status']/text()").extract()[3].strip() flight_item["terminal"] = AirportSpider.MAIN gate_info = flight.xpath("./td[@class='views-field views-field-field-gate']/text()").extract() if len(gate_info) < 4: flight_item["gate"] = AirportSpider.UNKNOWN else: flight_item["gate"] = gate_info[3].strip() flight_item["city"] = flight.xpath("./td/div/div/div/div/div/text()").extract()[3].strip() return flight_item
def __derive_flight(self, flight, leg): flight_item = FlightItem() gate = flight["Gate"]["Code"] flight_item["leg"] = leg flight_item["airline"] = flight["Airline"]["Name"] flight_item[ "flight_no"] = flight["Airline"]["Code"] + flight["FlightNumber"] flight_item["city"] = flight["Airport"]["Name"] flight_item["expected_time"] = flight["ScheduledTime"] flight_item["actual_time"] = flight["ActualTime"] flight_item["status"] = flight["YycStatus"]["PrimaryStatus"][ "ShortEnglishText"] flight_item["gate"] = gate if (len(gate) > 1): if gate[0] in YYCSpider.DOMESTIC_CONCOURSES: flight_item["terminal"] = AirportSpider.DOMESTIC elif gate[0] in YYCSpider.INTERNATIONAL_CONCOURSES: flight_item["terminal"] = AirportSpider.INTERNATIONAL else: flight_item["terminal"] = AirportSpider.UNKNOWN else: flight_item["terminal"] = AirportSpider.UNKNOWN return flight_item